vue-cli3+typescript初体验小结


Posted in Javascript onFebruary 28, 2019

前言

气势汹涌,ts似乎已经在来的路上,随时可能敲门。

2015年,三大前端框架开始火爆的时候,我还在抱着Backbone不放,一直觉得可以轻易转到其他框架去。后来换工作,现实把脸都打肿了,没做过vue、react、angular?不要!

今天,不能犯这个错了,毕竟时不我与,都快奔三了。

vue-cli3

vue-cli3的详细功能推荐官方文档,不在本文介绍范围内。

安装:

npm install -g @vue/cli

检查安装成功与否:

vue --version

创建项目:

vue create myapp

可以选择Manually select feature来自由选择功能,常用的有vuex、vue-router、CSS Pre-processors等,我们再把typescript勾上,就可以回车进入下一步了。PS:勾选的操作是按空格键。
创建成功之后,执行启动命令:

npm run serve

就可以通过http://localhost:8080/访问本地项目啦。

typescript

如果没有typescript基础,可以先补补课,大概花三十分钟就可以了解typescript的一些特性,比如:TypeScript 入门教程。
ts最主要的一点就是类型定义,有个概念才好看得懂demo。

vue-property-decorator

这是一个涵盖了vue的一些对象的集合,我们可以从这里取一些东西出来:

import { Component, Prop, Vue, Watch } from 'vue-property-decorator';

取出来的这几个属性,分别是 组件定义Component,父组件传递过来的参数Prop,原始vue对象Vue,数据监听对象Watch。还包括这里没有列举出来的ModelEmitInjectProvide,可以自己尝试下。

demo

<template>
 <div class="hello">
  <h1>{{ msg }}--{{ names }}</h1>
  <input type="text" v-model="txt">
  <p>{{ getTxt }}</p>
  <button @click="add">add</button>
  <p>{{ sum }}</p>
 </div>
</template>

<script lang="ts">
import { Component, Prop, Vue, Watch } from 'vue-property-decorator';

@Component
export default class HelloWorld extends Vue {
 //props
 @Prop() private msg!: string
 @Prop() private names!: string
 //data
 private txt: string = '1'
 private sum: number = 0
 //computed
 get getTxt(){
  return this.txt
 }
 //methods
 private add(){
  this.sum++
  console.log(`sum : ${this.sum}`)
 }
 //生命周期
 created(){
  console.log('created')
 }
 //watch
 @Watch('txt') 
 changeTxt(newTxt: string, oldTxt: string){
  console.log(`change txt: ${oldTxt} to ${newTxt}`)
 }
 
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="less">
h3 {
 margin: 40px 0 0;
}
input {
 width: 240px;
 height: 32px;
 line-height: 32px;
}
</style>

以上就是demo,代码组织有点散,没有原来js书写的整齐。

这个demo没有引入组件,如果需要引入组件,应该这样书写:

<template>
 <div class="home">
  <img alt="Vue logo" src="../assets/logo.png">
  <HelloWorld msg="Welcome to Your Vue.js + TypeScript App" names="aaa" />
  <HelloWorld2 msg="Welcome to Your Vue.js + TypeScript App" names="bbb" />
 </div>
</template>

<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';
import HelloWorld from '@/components/HelloWorld.vue'; // @ is an alias to /src
import HelloWorld2 from '@/components/HelloWorld2.vue'; // @ is an alias to /src

@Component({
 components: {
  HelloWorld,
  HelloWorld2,
 },
})
export default class Home extends Vue {}
</script>

结语

如果VSCode编辑器有警告提示,比如:

Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option to remove this warning.

可以把工作区其他的项目移除,或者把本项目拖动到工作区的首位,或者在把本项目的tsconfig.json复制到工作区首位的项目的根目录下,重启编辑器,有比较大的概率可以解决警告提示。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
从sohu弄下来的flash中展示图片的代码
Apr 27 Javascript
javascript的offset、client、scroll使用方法详解
Dec 25 Javascript
关于JavaScript与HTML的交互事件
Apr 12 Javascript
javascript对中文按照拼音排序代码
Aug 20 Javascript
Javascript MVC框架Backbone.js详解
Sep 18 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
Nov 12 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
Dec 08 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 Javascript
Bootstrap BootstrapDialog使用详解
Feb 17 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
Aug 17 jQuery
微信小程序实现留言板
Oct 31 Javascript
小程序日历控件使用方法详解
Dec 29 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
Feb 28 #Javascript
JS浅拷贝和深拷贝原理与实现方法分析
Feb 28 #Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
Feb 28 #Javascript
详解写好JS条件语句的5条守则
Feb 28 #Javascript
JS判断两个数组或对象是否相同的方法示例
Feb 28 #Javascript
jQuery.parseJSON()函数详解
Feb 28 #jQuery
js获取form表单中name属性的值
Feb 27 #Javascript
You might like
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
基于jQuery架构javascript基础体系
2011/01/01 Javascript
script不刷新页面的联动前后代码
2013/09/18 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
深入探究AngularJS框架中Scope对象的超级教程
2016/01/04 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
Python中优化NumPy包使用性能的教程
2015/04/23 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
解决nohup重定向python输出到文件不成功的问题
2018/05/11 Python
tensorflow更改变量的值实例
2018/07/30 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
linux下进程间通信的方式
2013/01/23 面试题
网吧最新创业计划书范文
2014/03/27 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
分公司经理任命书
2014/06/05 职场文书
节水标语大全
2014/06/11 职场文书
学校重阳节活动总结
2015/03/24 职场文书
新生开学寄语大全
2015/05/28 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
七年级作文之秋游
2019/10/21 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis
解读Vue组件注册方式
2021/05/15 Vue.js