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 相关文章推荐
火狐4、谷歌12不支持Jquery Validator的解决方法分享
Jun 20 Javascript
关于ExtJS4.1:快捷键支持的问题
Apr 24 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
Jun 23 Javascript
在Ubuntu上安装最新版本的Node.js
Jul 14 Javascript
jQuery实现跟随鼠标运动图层效果的方法
Feb 02 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
Mar 21 Javascript
JS实现的3D拖拽翻页效果代码
Oct 31 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
Jul 14 Javascript
Javascript中关于Array.filter()的妙用详解
Dec 04 Javascript
简单理解js的prototype属性及使用
Dec 07 Javascript
单击按钮发送验证码,出现倒计时的简单实例
Mar 17 Javascript
VeeValidate在vue项目里表单校验应用案例
May 09 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
建立动态的WML站点(一)
2006/10/09 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
jquery键盘事件使用介绍
2011/11/01 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
JavaScript定时器和优化的取消定时器方法
2015/07/03 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
angular 服务随记小结
2019/05/06 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
2020/11/12 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
仅利用30行Python代码来展示X算法
2015/04/01 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
python使用scapy模块实现ARP扫描的过程
2021/01/21 Python
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
求职信写作要突出重点
2014/01/01 职场文书
小学班级特色活动方案
2014/08/31 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书
python关于集合的知识案例详解
2021/05/30 Python
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
2022/04/11 Vue.js