使用TypeScript创建Vue项目
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项目的更多相关文章
- 使用vue-cli脚手架创建vue项目
使用vue-cli脚手架创建vue项目 首先,你已经安装了node. 使用vue-cli@2 创建项目 执行 命令: npm i -g vue-cli@2 //全局安装vue-cli@2脚手架 : v ...
- 使用vue-cli创建vue项目
vue-cli是官方发布的vue.js项目脚手架工具,使用它可以快速创建vue项目,github地址:https://github.com/vuejs/vue-cli 1.安装vue-cli //设置 ...
- Vue2+Webpack创建vue项目
相比较AngularJS和ReactJS,VueJS一直以轻量级,易上手称道.MVVM的开发模式也使前端从原先的DOM中解放出来,我们在不需要在维护视图和数据的统一上花大量时间,只需要关注于data的 ...
- 通过脚手架创建Vue项目
第一步 准备工作 1.下载安装Node.js 验证是否安装的方法,在命令行输入node -v 2.安装Vue 在命令行输入npm install -g @vue/cli 查看Vue版本号 npm vu ...
- Linux下创建vue项目
前提:已经安装了node.js.cnpm 1.全局安装vue脚手架vue-cli:#cnpm install -g vue-cli 注意:全局安装没有建立软链接前是无法使用刚刚安装的vue命令的,所以 ...
- Django day32 跨域问题,创建vue项目,axios的使用
一:跨域问题 1.同源策略(浏览器的安全策略) 只允许当前页面朝当前域下发请求,如果向其他域发请求,请求可以正常发送,数据也可以拿回,但是被浏览器拦截了 2.cors:只要服务器实现了CORS,就可以 ...
- VUE,基于vue-cli搭建创建vue项目
前提:必须安装node.js,官方地址:https://nodejs.org/en/ 然后安装vue-cli 安装方式:cmd命令行安装:打开cmd命令符输入进行全局安装脚手架:npm install ...
- TypeScript编写Vue项目结构解析
使用TypeScript编写Vue项目也已经有了一段时间,笔者在刚刚使用TypeScript时候也是很茫然,不知道从何下手,感觉使用TypeScript写项目感觉很累赘并不像JavaScript那么灵 ...
- 安装配置nodejs并创建Vue项目
一.下载安装node.js 1.Node.js 官方网站下载:https://nodejs.org/en/ 2.傻瓜式安装 双加安装包,除了根据自己的需要选择安装位置外,都默认下一步. 3.验证安装 ...
随机推荐
- meshing-网格加密
原视频下载:http://yunpan.cn/cujvm8VbAPJZi 访问密码 0d3b
- 数据结构Java版之堆&堆排序(九)
堆分为大顶堆,和小顶堆. 什么是堆? 堆可以看成是一棵二叉树,二叉树的元素是一个数组不断的从左到右轮训放置.如果是大顶堆,则大的数放上面一层,小的数放下面一层.上一层的数,一定大于下一层的数.小顶堆则 ...
- certification on windows and
https://jingyan.baidu.com/article/335530dae0eb2319ca41c378.html
- 第十四周助教工作总结——NWNU李泓毅
助教博客链接:https://www.cnblogs.com/NWNU-LHY/ 本次作业的要求:团队项目需求改进与系统设计:https://www.cnblogs.com/nwnu-daizh/p/ ...
- adb-andorid记录当前手机的日志当前显示的app进程及activity,
adb logcat -v time> /home/sumsang.log adb shell dumpsys window | grep mCurrentFocus
- laravel 通过ftp上传的时候报错 Use of undefined constant FTP_BINARY - assumed 'FTP_BINARY
用Laravel中的filesystems里面的ftp上传文件时报错.在windows上开发,文件上传的时候碰到上面的问题,搜了些资料,发现是php7的ftp拓展默认未开启. filesystems是 ...
- PHP实现执行定时任务
首先用命令检查服务是否在运行 systemctl status crond.service 如果服务器上没有装有crontab ,则可以执行 yum install vixie-cron yum in ...
- OptaPlanner 试验
OptaPlanner - Constraint satisfaction solver (Java™, Open Source)https://www.optaplanner.org/ jboss/ ...
- PHP 输出日志到文件 DEMO
首先需要确保输出文件有权限写入,一般设置权限为 chown -R nginx.nginx 输出的文件路径 如果以上方法还是无效,可以直接将文件设置有777,但是这种方式只能用于测试环境 chmod - ...
- postgre查询表和记录数,查表字段
select relname as TABLE_NAME, reltuples as rowCounts from pg_class where relkind = 'r' and relnamesp ...