vue.js单文件组件入门笔记

  • <a href="#nodejs">nodeJs</a>
    • <a href="#nodeJs安装">nodeJs安装</a>
    • <a href="#nodeJs模块">nodeJs模块</a>
  • <a href="#npm介绍">npm介绍</a>
    • <a href="#cnpm">cnpm</a>
    • <a href="#npm常用指令介绍">npm常用指令介绍</a>
      • <a href="#npm-init">npm init</a>
        • <a href="#packagejson文件">package.json文件</a>
      • <a href="#npm-install">npm install</a>
    • <a href="#webpack">webpack</a>
  • <a href="#Vuejs">Vue.js</a>
    • <a href="#Vue-cli">Vue-cli</a>
    • <a href="#vuejs基础">vue.js基础</a>
    • <a href="#项目实战">项目实战</a>
      • <a href="#目录分析">目录分析</a>
    • <a href="#vue-resource">vue-resource</a>
    • <a href="#Vue-router">Vue-router</a>
    • <a href="#vuex">vuex</a>
      • <a href="#Getters">Getters</a>
      • <a href="#Mutations">Mutations</a>
      • <a href="#Actions">Actions</a>
      • <a href="#Modules">Modules</a>

本文目的是介绍如何使用vue.js去构建一个单页面应用。

<a name="nodejs" href="#nodejs">

nodeJs</a>

<a name="nodeJs安装" href="#nodeJs安装">

nodeJs安装</a>

Node.js是一个Javascript运行环境(runtime)

nodejs内置npm。

node -v
npm -v

查看是否安装成功以及查看版本号

<a name="nodeJs模块" href="#nodeJs模块">

nodeJs模块</a>

教程:http://www.runoob.com/nodejs/nodejs-tutorial.html
demo:https://git.oschina.net/MRLH/nodeJsLearning.git
见work-07
了解一下export和import

<a name="npm介绍" href="#npm介绍">

npm介绍</a>

官网:https://www.npmjs.com/
官方文档:https://docs.npmjs.com/getting-started/what-is-npm
简易汉化:http://www.jianshu.com/nb/10645887

NPM的全称是Node Package Manager ,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。

我们要先配置npm的全局模块的存放路径以及cache的路径。

npm config set prefix “D:\nodejs\node_global”

以及

npm config set cache “D:\nodejs\node_cache”

增加NODE_PATH(全局变量模块存放位置)
打开系统对话框,“我的电脑”右键“属性”-“高级系统设置”-“高级”-“环境变量”。
进入环境变量对话框,在系统变量下新建”NODE_PATH”,输入”D:\nodejs\node_global\node_modules”。(ps:这一步相当关键。)

由于改变了module的默认地址,所以上面的用户变量都要跟着改变一下(用户变量”PATH”新增“%NODE_PATH%;”),要不使用module的时候会导致输入命令出现“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”这个错误。

<a name="cnpm" href="#cnpm">

cnpm</a>

由于国内有墙的原因,使用npm下载包相当慢,有可能因为网速原因导致下载包失败。所以推荐使用cnpm,下载源为淘宝的镜像。
http://npm.taobao.org/

支持 npm 除了 publish 之外的所有命令。

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

<a name="npm常用指令介绍" href="#npm常用指令介绍">

npm常用指令介绍</a>

下面的npm皆可用cnpm替代

<a name="npm-init" href="#npm-init">

npm init</a>

执行该指令将会在当前文件夹下生成一个package.json文件。这个文件类似于maven的pom.xml文件。用于管理包,以及记录当前项目的一些描述信息。

<a name="packagejson文件" href="#packagejson文件">

package.json文件</a>

dependencies里面放的是项目依赖的包。如vue
devDependencies里面放的是开发时编译需要的包。如babel,[xx]-loader。

<a name="npm-install" href="#npm-install">

npm install</a>

安装命令
简写:npm i

npm install

会安装package.json文件中声明的包,会把包安装到当前文件夹的node_modules目录中。

npm install packagename

安装指定名字的包

npm install packagename -g

安装指定名字的包到全局,这个一般是用于安装需要在命令行使用到的包,如webpack。

npm install packagename --save

安装项目依赖的包,也就是项目中会用到的包,如vue。同时在package.json文件的dependencies中添加该包的描述。

npm i packagename --save-dev

安装编译时需要的包,如babel,[xx]-loader等等。同时在package.json文件的devDependencies中添加该包的描述。

npm uninstall packagename

用于卸载包

<a name="webpack" href="#webpack">

webpack</a>

用于打包的一个工具

一些样例:
https://github.com/ruanyf/webpack-demos#demo01-entry-file-source

<a name="babel" href="#babel">

babel</a>

用于把高版本的js语法转换为低版本语法,让项目中可以使用最新的js语法。

ECMAScript 6语法学习:http://es6.ruanyifeng.com/

<a name="eslint" href="#eslint">

eslint</a>

代码质量管理工具,用来避免低级错误和统一代码的风格,这个在项目中可以关闭。

<a name="Vuejs" href="#Vuejs">

Vue.js</a>

Vue 不支持 IE8 以及更低版本浏览器。

<a name="Vue-cli" href="#Vue-cli">

Vue-cli</a>

参考文档:http://www.jianshu.com/p/f8e21d87a572
专门用来下载项目模板的,项目搭建好就不需要了。

npm i -g vue-cli

安装vue-cli

vue -V

检查是否安装成功

vue init webpack my-project

初始化vue工程,或者说是创建模板项目。
项目名为my-project

cd my-project
npm install

安装项目依赖

npm run dev

运行项目

npm run build

编译打包项目,打包到dist目录

<a name="vuejs基础" href="#vuejs基础">

vue.js基础</a>

官方文档:https://cn.vuejs.org/v2/guide/
一些demo: https://git.oschina.net/MRLH/vueLearning.git
个人见解:和el表达式很像,和anglarJs更像。
注意事项:注意对象属性的添加和数组中元素的添加。
见:https://cn.vuejs.org/v2/guide/list.html#数组更新检测
见:https://cn.vuejs.org/v2/guide/reactivity.html#变化检测问题

<a name="项目实战" href="#项目实战">

项目实战</a>

demo地址:https://git.oschina.net/MRLH/vue-time-tracker.git
demo详解: http://blog.csdn.net/sinat_17775997/article/details/55097003

<a name="目录分析" href="#目录分析">

目录分析</a>

build,config,test放一些配置文件,一般不进行修改。
node_modules放置项目依赖的包文件。
dist目录放置打包后生成的文件,发布时只需要dist文件夹
static放置静态资源不会参与打包,一般放置一些图片资源,不要放样式文件到这个里面,shotcut文件放这个目录里面。
src目录放置源码
index.html一般不做修改。

assets目录用来放置资源文件
components放置vue组件
router用于控制界面跳转
store用于存储数据,以及操作数据
views用于存放vue界面

views和components存放的东西是没有区别的,都是vue组件,只是根据作用不同进行区分的。

<a name="vue-resource" href="#vue-resource">

vue-resource</a>

官方建议使用axios
main.js

import axios from 'axios'
Vue.prototype.$http = axios

其他地方使用的话 如同使用 vue-resource 一样

this.$http.get(URL).then(response => {
    // success callback
}, response => {
    // error callback
})

<a name="Vue-router" href="#Vue-router">

Vue-router</a>

官方文档:https://router.vuejs.org/zh-cn/
一个vue实例只有一个vue-router。
通常一个

<a name="router-link" href="#router-link">

router-link</a>

<router-link to="src">name</router-link>

用于页面导航,效果约等于<a>标签

<a name="router-view" href="#router-view">

router-view</a>

<router-view></router-view>

路由匹配到的组件将渲染在这里

<a name="vuex" href="#vuex">

vuex</a>

官方文档:https://vuex.vuejs.org/zh-cn/

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。

  • state,驱动应用的数据源;
  • view,以声明方式将state映射到视图;
  • actions,响应在view上的用户输入导致的状态变化。

以下是一个表示“单向数据流”理念的极简示意:


单向数据流

但是,当我们的应用遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏:

  • 多个视图依赖于同一状态。
  • 来自不同视图的行为需要变更同一状态。

Vuex 可以帮助我们管理共享状态

vuex

<a name="State" href="#State">

State</a>

用于存放数据

取数据方法:

this.$store.state.xxx

<a name="Getters" href="#Getters">

Getters</a>

用于存放处理后的数据

取数据方法:

this.$store.getters.xxx

<a name="Mutations" href="#Mutations">

Mutations</a>

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。

调用方法

store.commit('xxx')

<a name="Actions" href="#Actions">

Actions</a>

Action 类似于 mutation,不同在于:

  • Action 提交的是 mutation,而不是直接变更状态。
  • Action 可以包含任意异步操作。

调用方法

store.dispatch('increment')

<a name="Modules" href="#Modules">

Modules</a>

使用单一状态树,导致应用的所有状态集中到一个很大的对象。但是,当应用变得很大时,store 对象会变得臃肿不堪。

为了解决以上问题,Vuex 允许我们将 store 分割到模块(module)。每个模块拥有自己的 state、mutation、action、getters、甚至是嵌套子模块。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 还记得我们的孩提时代吗? 总爱在纸上画些我们想画的,然后高高兴兴的展示给爸妈看,骄傲的说,我画了个啥~虽然爸妈全然...
    欣然8678阅读 425评论 0 3