简介:
简单的说 Node.js 就是运行在服务端的 JavaScript。
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
安装:
Node.js 安装包及源码下载地址为:https://nodejs.org/en/download/。
验证是否安装成功
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
允许用户从NPM服务器下载别人编写的第三方包到本地使用。
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像。
淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:
$ npm install -g cnpm --registry=https://registry.npm.taobao.org |
这样就可以使用 cnpm 命令来安装模块了:
$ cnpm install [name] |
在用 Vue.js 构建大型应用时推荐使用 NPM 安装:
# 最新稳定版 $ cnpm install vue |
Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用。
# 全局安装 vue-cli $ cnpm install --global vue-cli # 创建一个基于 webpack 模板的新项目 $ vue init webpack my-project # 这里需要进行一些配置,默认回车即可 This will install Vue 2.x version of the template. Project name(工程名):回车 Project description(工程介绍):回车 Author:作者名 Vue build(是否安装编译器):回车 Install vue-router(是否安装Vue路由):回车 Use ESLint to lint your code(是否使用ESLint检查代码):y Set up unit tests(安装测试工具):y Setup e2e tests with Nightwatch(也是测试相关):y Should we run `npm install` for you after the project has been created? (recommended):回车 |
进入项目,安装并运行:
$ cd my-project $ cnpm install $ cnpm run dev DONE Compiled successfully in 4388ms > Listening at http://localhost:8080 |
将生成好的项目使用IDE(idea,eclipse)的工作目录中
这里使用的idea,安装vue.js的插件。
在Terminnal中启动项目
修改HelloWorld.vue中的代码,刷新浏览器
MVVM是Model-View-ViewModel的简写。即模型-视图-视图模型。【模型】指的是后端传递的数据。【视图】指的是所看到的页面。【视图模型】mvvm模式的核心,它是连接view和model的桥梁。它有两个方向:一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听。这两个方向都实现的,我们称之为数据的双向绑定。总结:在MVVM的框架下视图和模型是不能直接通信的。它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。并且MVVM中的View 和 ViewModel可以互相通信。MVVM流程图如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>初探vue</title> </head> <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script> <body> <div id="vue_det"> <h3>username : {{username}}</h3> <h3>address : {{address}}</h3> <h3>{{userinfo()}}</h3> </div> <!--这是我们的View--> <div id="app"> {{ message }} </div> <script type="text/javascript"> var vm = new Vue({ el: '#vue_det', data: { username: "happy", address: "北京市海淀区" }, methods: { userinfo: function() { return "用户名:"+this.username + "-----地址:"+this.address; } } }); // 这是我们的Model var exampleData = { message: 'Hello World!' } // 创建一个 Vue 实例或 "ViewModel" // 它连接 View 与 Model var test2= new Vue({ el: '#app', data: exampleData }) </script> </body> </html> |
data:定义所需的属性
methods:定义的函数,可以通过 return 来返回函数值。
{{ }} 用于输出对象属性和函数返回值。
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script> <body> <!--这是我们的View--> <div id="app"> <p>{{ message }}</p> <input type="text" v-model="message"/> </div> <script> // 这是我们的Model var exampleData = { message: 'Hello World!' } // 创建一个 Vue 实例或 "ViewModel" // 它连接 View 与 Model new Vue({ el: '#app', data: exampleData }) </script> </body> </html> |
将message绑定到文本框,当更改文本框的值时,<p>{{ message }}</p> 中的内容也会被更新。
反过来,如果改变message的值,文本框的值也会被更新,我们可以在Chrome控制台进行尝试。