Vue总结

  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模版中作为标签使用(相当于大量全局注册的组件)。

 

posted @ 2019-11-22 15:12  王康杰  阅读(232)  评论(0编辑  收藏  举报