1 Vue 前端集成框架 用于分离项目前端内容,实现前后端分离,有独立服务器?在哪?服务器or客户端? 2 算法 3 单页面实现渐进式控制 类似编程语言中的解释型语言 4 知识 5 单页面应用组件化开发 6 Django项目分为: 7 前后台不分离项目: 8 1)后台渲染页面:模板语音 {{}} {%%} 9 2)csrf-token => form post 请求 10 3)render、HTTPResponse、redirect => JSONResponse 11 4)ajax => 页面的局部刷新 12 13 前后台分离项目: 14 1)前台页面自己渲染 - 自己搭建运行的服务器 15 2)ajax完成数据请求 16 3)drf - django rest framework - restful - 接口 17 4)vue - 数据驱动 18 DOM驱动 19 JQ: 内容 样式 事件 操作:选择器获取标签、设置钩子(事件)、内容样式操作 20 数据驱动 21 Vue 22 cbv 23 fbv 24 MVVM设计模式 model view 把control分为VC和MC 25 Vue优点 26 1)单页面 - 硬件要求低 27 2)组件化开发 28 3)数据驱动 29 4)数据的双向绑定 30 5)虚拟DOM(内存DOM,效率高) 31 6)轻量级 32 new Vue({ 33 el:‘‘, 34 data:{ 35 var:‘val‘#{{var}} 36 }, 37 methods:{ 38 func_name:function(){ 39 #@event=‘func_name‘ 40 }or 41 func_name(){ 42 #@event=‘func_name‘ 43 } 44 } 45 }) 46 Vue学习分为三部分: 47 指令:写在标签的属性区域内(插值表达式除外) 48 49 文本指令:变量值在成员组的data中绑定 50 插值表达式:{{变量或表达式}} 51 v-text=‘var‘ #原文本会被msg替换 52 v-html=‘var‘ 53 v-once=‘var‘ #使文本固定,{{var}}与搭配使用 54 事件指令: 组件methods中绑定 55 v-on:event=‘func_name‘ #监听,‘v-on:’可以简写为‘@’ 56 斗篷指令 v-cloak #不太懂唉 57 属性指令: 58 v-bind:att=‘var or val‘ #绑定,与实例成员data对应,可以简写: 59 表单指令: 60 v-model=‘var‘ #双向绑定,v-model存储的值为<input>标签的value值,与实例成员data对应,改变同步 61 条件指令: 62 v-if v-else-if v-else #v-if="条件表达式" 63 v-show=‘var‘ #var==None 则隐藏 64 循环指令: 65 v-for= ‘(val key index) in vars指令基于一个数组来渲染一个列表,可以使用:key绑定来绑定其中数据以便加以改变 66 todolist: 67 68 实例成员: 69 el 70 data 71 methods 方法,通用与任何函数,响应式依赖:访问一次缓存,执行一次函数#重过程 72 computed 非响应式依赖:一次缓存可多次访问,只有当因变量改变,才执行一次函数#重结果 73 watch 如果多个变量依赖于一个变量,多随一 #侦听器 74 75 组件:组件是可复用的 Vue 实例,且带有一个名字,通用选项有:data、computed、watch、methods 以及生命周期钩子。 76 根组件:通过new Vue 创建的Vue根实例,特有el选项 77 子组件:作为标签使用,每使用一次创建一个新实例,为了独立维护组件data里的变量,组件的 data 选项必须是一个函数,返回data对象:data:function(){return {count: 0}} 78 全局注册:Vue.component(‘my-component-name‘, { ... options ... }),注册之后的全局使用 79 局部注册: 80 父传子 props:[] 81 子传父 $emit(‘func_name‘,var) 82 83 Vue实例生命周期与钩子: 84 beforeCreate(){} 85 created(){} 86 beforeMount(){} 87 mounted(){} 88 Vue项目: 89 目录:element-ui https://element.eleme.cn/#/zh-CN 90 node_modules:项目依赖 91 public:公用文件 92 favicon.ico:页面标签图标 93 index.html:项目的唯一页面(单页面) 94 95 src:项目开发文件目录 96 assets:静态资源 97 css|js|img 98 components:小组件 99 *.vue 100 export default{}? 101 views:视图组件 102 *.vue 103 App.vue:根组件 104 main.js:主脚本文件 105 router.js:路由脚本文件 - vue-router 106 store.js:仓库脚本文件 - vuex 107 108 *.xml|json|js:一系列配置文件 109 README.md:使用说明 110 功能: 111 vue-router:路由 112 router.js 路由分发 113 路由传参1、path:‘url:id‘; this.$route.params.id可以拿到链接中 :变量 变量中的数据 $route数据$router路径 114 115 router-link:to 路由寻址 116 2、<router-link :to="‘/course/detail?id=‘ + course.id">; this.$route.query.id拿到参数 117 router-view:视图替换 118 this.$router.go(-1) //返回历史记录的前一页 119 vuex: 120 store.js 全局可访问 121 122 vue-cookie: 123 安装: 124 >: cd 项目目录 125 >: cnpm install vue-cookie --save 126 配置: 127 main.js 128 import cookie from ‘vue-cookie‘ 129 Vue.prototype.$cookie = cookie; 130 131 使用: 132 token是后台返回的 133 设置cookie 134 this.$cookie.set(key, value, time) 135 取出cookie 136 this.$cookie.get(key) 137 删除cookie 138 this.$cookie.delete(key) 139 axios:#Axios是一个HTTP 库,可以用在浏览器和 node.js 中。 140 安装: 141 >: cd 项目目录 142 >: cnpm install axios --save 143 配置: 144 main.js 145 import Axios from ‘axios‘ 146 Vue.prototype.$axios = Axios; 147 跨域问题这里解决: 148 ‘‘‘ 149 1)安装django-cors-headers模块 150 151 2)在settings.py中配置 152 # 注册app 153 INSTALLED_APPS = [ 154 ... 155 ‘corsheaders‘ 156 ] 157 3)添加中间件 158 MIDDLEWARE = [ 159 ... 160 ‘corsheaders.middleware.CorsMiddleware‘ 161 ] 162 4)允许跨域源 163 CORS_ORIGIN_ALLOW_ALL = True 164 ‘‘‘ 165 前后端交互: 166 GET: 167 this.$axios({ 168 url: ‘http://localhost:8000/test/data/‘, 169 method: ‘get‘, 170 params: { 171 usr: ‘zero‘, 172 pwd: ‘000‘ 173 } 174 }).then((response) => { 175 console.log(response.data) 176 }).error((error) => { 177 console.log(error) 178 }); 179 POST: 180 this.$axios({ 181 url: ‘http://localhost:8000/test/data/‘, 182 method: ‘post‘, 183 data: { 184 username: ‘owen‘, 185 password: ‘123‘ 186 } 187 }).then((response) => { 188 console.log(response.data) 189 }).error((error) => { 190 console.log(error) 191 }); 192 element-ui 193 安装:>: npm i element-ui -S 194 配置: 195 main.js 196 import ElementUI from ‘element-ui‘ #js文件 197 Vue.use(ElementUI)#全局使用,如Vue.user(Router) 198 199 import ‘element-ui/lib/theme-chalk/index.css‘;#样式文件 200 使用:element-ui文件里有大量组件及其内部小组件,vue模版中作为标签使用(相当于大量全局注册的组件)。
原文:https://www.cnblogs.com/benjieming/p/11911664.html