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 相关文章推荐
jquery插件lazyload.js延迟加载图片的使用方法
Feb 19 Javascript
jQuery实现提示密码强度的代码
Jul 15 Javascript
Bootstrap开发实战之响应式轮播图
Jun 02 Javascript
node.js + socket.io 实现点对点随机匹配聊天
Jun 30 Javascript
angular.extend方法的具体使用
Sep 14 Javascript
Vue 中的compile操作方法
Feb 26 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
Mar 01 Javascript
解决element UI 自定义传参的问题
Aug 22 Javascript
element-ui组件中input等的change事件中传递自定义参数
May 22 Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
Dec 12 Javascript
Java Varargs 可变参数用法详解
Jan 28 Javascript
vscode调试node.js的实现方法
Mar 22 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学习之PHP表达式
2006/10/09 PHP
用PHP函数解决SQL injection
2006/12/09 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
学习python的几条建议分享
2013/02/10 Python
Python的gevent框架的入门教程
2015/04/29 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
一些Unix笔试题和面试题
2012/09/25 面试题
毕业生自荐书
2013/12/18 职场文书
生活部的活动方案
2014/08/19 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书
社区端午节活动总结
2015/02/11 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
基于python实现银行管理系统
2021/04/20 Python