nodejs--vue


基础知识认识:

  1. 前端工程化
  2. 最近才兴起,nodejs(包的管理更加方便),webpack
  3. 数据双向绑定
  4. mvm 数据驱动vuevue改变数据
  5. 组件化开发
  6. vue 中的常见 概念:
  7. webpack
  8. 目的:把所有的 vue文件或者其他文件 转换成 js文件
  9. vue (框架),vuex(组件间的通信), vue-router(路径--组件关联,跳转),axiosajaxhttp请求包)
  10. ES6ES6语法),babel(转换器--转换成ES5
  11. vue框架的优势:
  12. jquery 效率更好
  13. 前后端分离 --- 只提供数据
  14. 前后端融合 --- render
  15. 速度快,灵活,学习快

vue的基本语法

  • {{}} 插入值,里面可以放表达式

  • 指令 v-*:是带有V-前缀的特殊属性,通过属性来操作元素

事件绑定-- v-on: @

属性绑定 -- v-bind: :

  1. v-text 在元素中插入值
  2. v-html 文本 标签
  3. v-if 控制标签是否被注释
  4. v-show 控制标签是否显示 (display)
  5. v-for 循环渲染 标签
  6. 数组循环
  7. v-for='(item,index) in arr'
  8. {{item}}:{{index}}
  9. 对象循环
  10. v-for='(item,key,index) in obj'
  11. {{item}}:{{key}}:{{index}}
  12. v-on 监听元素时间,并且执行相应的操作
  13. 函数
  14. v-on:click='show()'
  15. 简写
  16. @click='func1()'
  17. 对数组进行操作
  18. push
  19. pop
  20. shift
  21. unshift
  22. splice
  23. reverse
  24. 元素删除
  25. 修改 定义在new Vue 中的变量,相应的dom元素也会改变
  26. this.arr.pop();
  27. v-bind 绑定元素的属性 来执行相应的操作
  28. v-bind:href='url'
  29. 简写
  30. :href='url1'
  31. v-bind:class='{div:isTrue}'
  32. v-model 实现了视图和数据的双向绑定
  33. 把元素的值和数据绑定
  34. 当输入内容时,数据相应变化
  35. 当改变数据时,输入的内容也会发生改变

vue 的设计模式是MVVM

  1. MVVM Model- View-ViewModel 数据展示到视图是通过ViewModel控制上去的
  2. 组件的概念就是由html,cssjs构成的一个模块
  3. 模块:一个js文件就是一个模块、
  4. vue的组件是通过一个工具(webpack)进行打包,打包成一个*.vue
  5. webpack:一个打包机,将我们html,css,js等等打包成一个文件让我们浏览器识别。捆绑

vue的核心用法 :

  1. 1、模板语法:使用{{}}进行插值
  2. 2、指令系统:v-if,v-show,v-bind,v-on,v-for,v-model,v-html
  3. v-if:真正的条件渲染
  4. v-show:惰性的渲染,这个渲染方式会在标签上加style样式
  5. v-bind:绑定属性,可以在任何的标签中绑定标签中自己的属性和自定义的属性
  6. v-on:绑定事件,可以绑定js中所有的事件,包括click,hover,mouseover......
  7. v-for:遍历数组
  8. v-mode:表单控件中实现双向数据绑定
  9. v-html:双大括号会将数据解释为普通文本,而非 HTML 代码。为了输出真正的 HTML,你需要使用 v-html 指令
  10. 3computed计算属性
  11. 注意:使用computed的时候默认只有getter ,它能实时监听数据属性的变化。当然了,在必要的时候我们还可以加setter

如何使用npm

  1. npm全称:node package manger
  2. 使用npm
  3. 1.执行npm init 初始化项目 自动生成一个package.json的文件
  4. 2.npm install jquery --save
  5. 下载相应的jquery的包,并自动的生成node_modules的文件夹到该文件夹下
  6. 3.npm uninstall jquery --save 卸载jquery的包

package.json管理着我们当前项目需要的包

  1. 有时候我们会讲我们的写好的项目代码上传到github上,但github只允许上传100兆以上的项目,这时候node_modules在上传的时候会被
  2. 忽略。但是package.json管理着我们当前项目需要的包,那么我们从github上下载当前项目中,安装readme的文档提示做需求即可,一般需要npm instal

vue中的数据流

  1. ===》自上而下

组件之间的通信:

  1. 1.父组件往子组件传值:使用自定义属性,子组件一定要验证自定义的属性的类型
  2. 2.子组件往父组件传值:使用自定义事件
  3. 3.同级组件之间的传值:官方建议使用vuex,第三天会讲

vue+vue-router 来创建单页面应用

  1. 单页面应用的网站:知乎、稀土掘金、少数派、网易云、饿了么移动端、豆瓣等等
  2. 使用vue-router
  3. <script src="https://unpkg.com/vue/dist/vue.js"></script>
  4. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
  5. <div id="app">
  6. <h1>Hello App!</h1>
  7. <p>
  8. <!-- 使用 router-link 组件来导航. -->
  9. <!-- 通过传入 `to` 属性指定链接. -->
  10. <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
  11. <router-link to="/foo">Go to Foo</router-link>
  12. <router-link to="/bar">Go to Bar</router-link>
  13. </p>
  14. <!-- 路由出口 -->
  15. <!-- 路由匹配到的组件将渲染在这里 -->
  16. <router-view></router-view>
  17. </div>
  18. JavaScript
  19. // 0. 如果使用模块化机制编程,导入Vue和VueRouter,要调用 Vue.use(VueRouter)
  20. // 1. 定义(路由)组件。
  21. // 可以从其他文件 import 进来
  22. const Foo = { template: '<div>foo</div>' }
  23. const Bar = { template: '<div>bar</div>' }
  24. // 2. 定义路由
  25. // 每个路由应该映射一个组件。 其中"component" 可以是
  26. // 通过 Vue.extend() 创建的组件构造器,
  27. // 或者,只是一个组件配置对象。
  28. // 我们晚点再讨论嵌套路由。
  29. const routes = [
  30. { path: '/foo', component: Foo },
  31. { path: '/bar', component: Bar }
  32. ]
  33. // 3. 创建 router 实例,然后传 `routes` 配置
  34. // 你还可以传别的配置参数, 不过先这么简单着吧。
  35. const router = new VueRouter({
  36. routes // (缩写)相当于 routes: routes
  37. })
  38. // 4. 创建和挂载根实例。
  39. // 记得要通过 router 配置参数注入路由,
  40. // 从而让整个应用都有路由功能
  41. const app = new Vue({
  42. router
  43. }).$mount('#app')
  44. // 现在,应用已经启动了!

实例

main.js

  1. import Vue from 'vue'
  2. import App from './App'
  3. import router from './router'
  4. import axios from 'axios'
  5. import store from './store/store'
  6. Vue.prototype.$axios = axios;
  7. // 全局变量的声明 ---
  8. Vue.config.productionTip = false;
  9. /* eslint-disable no-new */
  10. new Vue({
  11. el: '#app',
  12. router,
  13. store,
  14. components: { App },
  15. template: '<App/>'
  16. })

store/store.js

  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. import Cookie from 'vue-cookies'
  4. Vue.use(Vuex);
  5. export default new Vuex.Store({
  6. state:{
  7. username:Cookie.get('username'),
  8. token:Cookie.get('token')
  9. },
  10. mutations:{
  11. // 组件中 通过 this.store.commit 参数 调用
  12. saveToken(state,data){
  13. state.username = data.username;
  14. state.token = data.token;
  15. //设置到内存中
  16. Cookie.set('username',data.username,'20min');
  17. Cookie.set('token',data.token,'20min')
  18. //设置到cookie中
  19. },
  20. clearToken(state){
  21. state.username = null;
  22. state.token = null;
  23. Cookie.remove('username');
  24. Cookie.remove('token')
  25. }
  26. }
  27. })

router/index.js

  1. import Vue from 'vue'
  2. import Router from 'vue-router'
  3. import Index from '@/components/Index'
  4. import Login from '@/components/Login'
  5. import Course from '@/components/Course'
  6. import Luffy from '@/components/Luffy'
  7. import News from '@/components/News'
  8. import NotFound from '@/components/NotFound'
  9. import CourseDetail from '@/components/CourseDetail'
  10. Vue.use(Router);
  11. export default new Router({
  12. routes: [
  13. {
  14. path: '/',
  15. name: 'Index',
  16. component: Index
  17. },
  18. {
  19. path: '/index',
  20. name: 'Index',
  21. component: Index
  22. },
  23. {
  24. path: '/login',
  25. name: 'Login',
  26. component: Login
  27. },
  28. {
  29. path: '/course',
  30. name: 'Course',
  31. component: Course
  32. },
  33. {
  34. path: '/course/detail/:id/',
  35. name: 'CourseDetail',
  36. component: CourseDetail
  37. },
  38. {
  39. path: '/luffy',
  40. name: 'Luffy',
  41. component: Luffy
  42. },
  43. {
  44. path: '/news',
  45. name: 'News',
  46. component: News
  47. },
  48. {
  49. path: '*',
  50. name: '*',
  51. component: NotFound
  52. },
  53. ],
  54. mode:'history'
  55. })

Course.vue

  1. <template>
  2. <div class="course">
  3. <ul>
  4. <li v-for="item in courseArray">
  5. <router-link :to="{'path':'/course/detail/'+item.id}">{{item.name}}</router-link>
  6. </li>
  7. </ul>
  8. </div>
  9. </template>
  10. <script>
  11. export default {
  12. name: 'Course',
  13. data () {
  14. return {
  15. courseArray:[
  16. ]
  17. }
  18. },
  19. mounted:function(){
  20. this.initCourse()},
  21. methods:{
  22. initCourse(){
  23. var that = this;
  24. this.$axios.request({
  25. url:'http://127.0.0.1:8000/course/',
  26. method:'GET',
  27. responseType:'json'
  28. }).then(function (response) {
  29. that.courseArray = response.data;
  30. })
  31. }
  32. }
  33. }
  34. </script>
  35. <!-- Add "scoped" attribute to limit CSS to this component only -->
  36. <style scoped>
  37. li{
  38. list-style: none;
  39. }
  40. </style>

nodejs--vue的更多相关文章

  1. nodejs+vue.js+webpack

    前端: nodejs+vue.js+webpack 后台:ssb(Spring+SpringMVC + mybatis-plus) 开发工具:idea 一.前提 1.安装nodejs 2.安装完nod ...

  2. nodejs, vue, webpack 项目实践

    vue 及 webpack,均不需要与nodejs一期使用,他们都可以单独使用到任何语言的框架中. http://jiongks.name/blog/just-vue/ https://cn.vuej ...

  3. nodejs vue的安装

    1.https://nodejs.org/en/ 下载最新版nodejs 2.安装好后win+R输入cmd(管理员权限键入):node -v(node版本)npm -v(npm版本)查看版本号,如图所 ...

  4. nodeJs+vue安装教程详解 相信

    相信很多朋友都在装node服务和安装vue的时候会遇到一些问题,下面为大家详细介绍node服务的安装以及vue的安装: 1.nodeJs官网下载版本(根据自己电脑的配置进行相应下载即可):默认安装路径 ...

  5. Windows安装VsCode 和Nodejs Vue

    一.安装VSCode 1.在官网下载并安装VSCode https://code.visualstudio.com/Download 注意:解压到非系统盘(节约系统盘空间,也方便后面使用) 文件夹最好 ...

  6. nodejs vue SyntaxError:Block-scoped declarations (let,const,function,class) not yet supported

    下午在git上导入之前写的代码到本地环境,执行npm run dev报错. 在我之前的环境中是没有问题的,这个错误信息也没看懂是什么原因引起的, 猜测可能是nodejs版本太低,于是重新下载了一个wi ...

  7. nodejs vue 微信公众号开发(二)申请微信测试号

    1.打开微信测试公众号开发平台http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 扫码登陆

  8. 在阿里云 ECS 搭建 nginx https nodejs 环境(三、nodejs)

    在阿里云 ECS 搭建 nginx https nodejs 环境(三.nodejs) 在阿里云 ECS 搭建 nginx https nodejs 环境(三.nodejs) 第一步 指定版本源 执行 ...

  9. vue不是内部或外部命令,配置一个Path系统变量就可以解决

    作为一个vue小白,最近为vue安装真是操碎了心.无论怎么查找网上的教程,还是解决不了"vue不是内部或外部的命令"诸如此类的问题.好在功夫不负有心人,终于在多次的试验下,成功解决 ...

  10. VUE初体验篇-安装

    现代前端框架大行其道,讲前端思想从操作dom的阶段,升级到操作数据的阶段.vue作为三大前端框架之一,其中平缓的学习曲线,让好多前端新手非常喜欢,应用也越来越广泛.虽然其他两个框架有facebook, ...

随机推荐

  1. 部署Jenkins+docker集成环境

    环境: 主机(mac osx)和虚拟机(Ubuntu 16.04) mac osx系统,运行Jenkins Ubuntu16.04系统,运行docker(用Ubuntu14.04镜像创建一个docke ...

  2. Django进阶项目

    本来想上午轻轻松松搞定,没想到还是出了其他的问题,好在最后都解决了 在middleware.py当中 # -*- coding:utf-8 -*- __author__ = 'feimao' impo ...

  3. HDF 文件数据的读取

    http://www.cams.cma.gov.cn/cams_973/cheres_docs/cheres_doc_sat.modis.1b.html一. HDF文件格式 1.概述 HDF 是美国国 ...

  4. 0607am抽象类&接口&析构方法&tostring&小知识点

    /*class ren{ public static $color;//静态 static function () { ren::$color; self::$color;//self只能写在类里面, ...

  5. python之路 内置函数,装饰器

    一.内置函数 #绝对值 abs() #所有值都为真才为真 all() #只要有一个值为真就为真 any() #10进制转成二进制 bin() #10进制转成八进制 oct() #10进制转成十六进制 ...

  6. 使用新浪IP库获取IP详细地址

    使用新浪IP库获取IP详细地址 <?php class Tool{ /** * 获取IP的归属地( 新浪IP库 ) * * @param $ip String IP地址:112.65.102.1 ...

  7. loadrunder之脚本篇——集合点设置

    1  作用 通过让多用户在同一时间点上进行并发操作来测试系统的并发处理的能力 2  实现 通过集合点函数来实现. 注意:集合点经常和事务结合起来使用.集合点只能插入到Action部分,vuser_in ...

  8. java word导入导出工具类

    package com.shareworx.yjwy.utils; import java.io.InputStream; import java.util.HashMap; import java. ...

  9. gstreamer——文档/资源/使用

    http://gstreamer.freedesktop.org/src/ http://gstreamer.freedesktop.org/data/doc/gstreamer/head/qt-gs ...

  10. HGVS的变异格式

    符号: 1.HGVS的变异格式由两部分组成: 1.1 reference sequence file identifier (accession.version-number) :  actual d ...