Vue的灵活性总是让代码看起来非常洗练,对TypeScript来说也是一种挑战, 好在Vue对TypeScript进行了一次全方位的适配。

  相对于React严谨的代码,Redux啰嗦的样板代码,Vue就显得非常灵活。Vue采用双向绑定原理,如下图所示

  双向绑定的好处是这样的,在数据发生变化的时候,会发布一个叫“model-update”的事件,类似,当视图发生变化的时候,会发布一个叫“ui-update”的事件,Vue自动订阅了这些事件,并能自动处理好,我们无需关心到底是数据变化了还是UI变化了,Vue都能自己处理好。尤其是在绘制长的Form表单时,只需要将变量绑定在输入的模块上,无论是用户输入还是通过代码手动赋值,模块都会自动变化,不需要再去关心每个输入的细节。

  虽然Vue很棒,但对TypeScript的支持并不是那么完美,还有一些细节需要我们去做。

⒈安装Vue脚手架

npm install -g @vue/cli
# OR
yarn global add @vue/cli

⒉初始化项目

vue create ts-vue

  Vue的组件和React非常不同

  Vue的代码是这样的:

<template>
<div id="app">
<img alt="Vue logo" src="./assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div>
</template> <script>
import HelloWorld from './components/HelloWorld.vue' export default {
name: 'app',
components: {
HelloWorld
}
}
</script> <style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>

  我们可以清晰看到style、script以及html都在一个Vue组件里,支持TypeScript也只是让script标签能兼容TypeScript语法,与Node及React开发中直接修改整个文件名是截然不同的。

  同时你会发现,Vue的脚手架做的非常简单易懂,项目结构已经完全给你部署好了。

⒊集成TypeScript

  https://cn.vuejs.org/v2/guide/typescript.html

  *vue-class-component是Vue官方维护的一个库,可以让我们在Vue里面按照类的形式写代码

  *如果希望在Vue里使用props或者watch,推荐安装vue-property-decorator

  *如果你想在Vue中使用单向数据流的Redux,这也是允许的,官方推荐的工具是Vuex。Redux的架构由State、Reducer以及Action构成的,如图所示:

  *但Vuex的概念略有不同,如下图所示:

  Mutation相当于Reducer,用getter对State的查询进行了封装,使其有一个充满含义的名字:

const store = new Vuex.Store({
state:{
todos:[
{id:1.text:'...',done:true},
{id:2.text:'...',done:false},
]
},
getters:{
doneTodos: state => {
return state.todos.filter(todo => todo.done)
}
}
})

  

使用TypeScript创建Vue项目的更多相关文章

  1. 使用vue-cli脚手架创建vue项目

    使用vue-cli脚手架创建vue项目 首先,你已经安装了node. 使用vue-cli@2 创建项目 执行 命令: npm i -g vue-cli@2 //全局安装vue-cli@2脚手架 : v ...

  2. 使用vue-cli创建vue项目

    vue-cli是官方发布的vue.js项目脚手架工具,使用它可以快速创建vue项目,github地址:https://github.com/vuejs/vue-cli 1.安装vue-cli //设置 ...

  3. Vue2+Webpack创建vue项目

    相比较AngularJS和ReactJS,VueJS一直以轻量级,易上手称道.MVVM的开发模式也使前端从原先的DOM中解放出来,我们在不需要在维护视图和数据的统一上花大量时间,只需要关注于data的 ...

  4. 通过脚手架创建Vue项目

    第一步 准备工作 1.下载安装Node.js 验证是否安装的方法,在命令行输入node -v 2.安装Vue 在命令行输入npm install -g @vue/cli 查看Vue版本号 npm vu ...

  5. Linux下创建vue项目

    前提:已经安装了node.js.cnpm 1.全局安装vue脚手架vue-cli:#cnpm install -g vue-cli 注意:全局安装没有建立软链接前是无法使用刚刚安装的vue命令的,所以 ...

  6. Django day32 跨域问题,创建vue项目,axios的使用

    一:跨域问题 1.同源策略(浏览器的安全策略) 只允许当前页面朝当前域下发请求,如果向其他域发请求,请求可以正常发送,数据也可以拿回,但是被浏览器拦截了 2.cors:只要服务器实现了CORS,就可以 ...

  7. VUE,基于vue-cli搭建创建vue项目

    前提:必须安装node.js,官方地址:https://nodejs.org/en/ 然后安装vue-cli 安装方式:cmd命令行安装:打开cmd命令符输入进行全局安装脚手架:npm install ...

  8. TypeScript编写Vue项目结构解析

    使用TypeScript编写Vue项目也已经有了一段时间,笔者在刚刚使用TypeScript时候也是很茫然,不知道从何下手,感觉使用TypeScript写项目感觉很累赘并不像JavaScript那么灵 ...

  9. 安装配置nodejs并创建Vue项目

    一.下载安装node.js 1.Node.js 官方网站下载:https://nodejs.org/en/ 2.傻瓜式安装 双加安装包,除了根据自己的需要选择安装位置外,都默认下一步. 3.验证安装 ...

随机推荐

  1. Java与设计模式之单例模式(上)六种实现方式

           阎宏博士在<JAVA与模式>中是这样描述单例模式的:作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类.      ...

  2. 页面上有tab,如何点击加载更多?

    加载更多是一个很简单的东西.但是也有几点需要注意: 1.首先在你切换tab的时候,要么在调用这个函数的时候将这个的thispage设为1,要么在切换tab的时候将这个thispage设为1,当你将这个 ...

  3. Nginx 负载均衡演示之 upstream 参数 & location 参数

    upstream 参数nginx关于upstream参数官方文档:http://nginx.org/en/docs/http/ngx_http_upstream_module.html upstrea ...

  4. 【转】JVM类装载机制的解析,热更新的探讨(二)

    同样,一个Class对象必须知道自己的超类.超级接口.因此,Class对象会引用自己的超类和超级接口的Class对象.这种引用一定是实例引用.(实际上,超类.超级接口的引用也存储在常量池中,但为了区分 ...

  5. 小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_6、SpringBoot2.xHTTP请求配置讲解

    1.SpringBoot2.xHTTP请求配置讲解 简介:SpringBoot2.xHTTP请求注解讲解和简化注解配置技巧 1.@RestController and @RequestMapping是 ...

  6. Vue中路由的嵌套

    import Vue from 'vue'; import App from './App.vue'; //引入公共的scss 注意:创建项目的时候必须用scss import './assets/c ...

  7. typescript属性类型接口

    /* typeScript中的接口 - 1.属性类接口 */ /* 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用.接口定 ...

  8. weui 导航悬浮固定

    <style> .none{display: none} #toolbar { display: flex; justify-content: center; align-items: c ...

  9. SQL查询优化 LEFT JOIN和INNER JOIN

    作者:VerySky 推荐:陈敬(Cathy) SQL查询优化 LEFT JOIN和INNER JOIN 1,连接了八个数据库表,而且全部使用LEFT JOIN,如下所示: Resource_Reso ...

  10. 报错:MetaException(message:Version information not found in metastore. )

    报错背景: CDH安装完成hive后启动失败. 报错现象: [main]: Metastore Thrift Server threw an exception... MetaException(me ...