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 相关文章推荐
获取HTML DOM节点元素的方法的总结
Aug 21 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Feb 04 Javascript
jQuery 联动日历实现代码
May 31 Javascript
页面回到顶部的三种实现(锚标记,js)
Oct 01 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
Dec 12 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
Feb 13 Javascript
js动态添加表格数据使用insertRow和insertCell实现
May 22 Javascript
jQuery实现的超简单点赞效果实例分析
Dec 31 Javascript
JavaScript中将数组进行合并的基本方法讲解
Mar 07 Javascript
解析预加载显示图片艺术
Dec 05 Javascript
three.js中文文档学习之通过模块导入
Nov 20 Javascript
JS实现吸顶特效
Jan 08 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框架Swoole定时器Timer特性分析
2014/08/19 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
使用dynatrace-ajax跟踪JavaScript的性能
2010/04/12 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
2011/11/30 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
2015/02/28 Javascript
jquery实现简单的无缝滚动
2015/04/15 Javascript
基于jQuery实现在线选座之高铁版
2015/08/24 Javascript
jquery自定义表格样式
2015/11/23 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
2016/12/12 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
Python的Flask开发框架简单上手笔记
2015/11/16 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
python 输出上个月的月末日期实例
2018/04/11 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
大学生护理专业自荐信
2013/10/03 职场文书
工程造价自荐信
2013/10/09 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
上班旷工检讨书
2015/08/15 职场文书
利用js实现简单开关灯代码
2021/11/23 Javascript