• vue


     推荐博客:https://www.cnblogs.com/GGGG-XXXX/articles/9467297.html

    	HTML  超文本标记语言  框架
    	css   层叠样式表      样式渲染
    	js    脚本语言        交互
    
    	Bootstrap    css js封装
    	Jquery 		对js进行封装
    	
    	ES6的常用语法
    		-- 变量(变量的提升)
    			-- var
    			-- let 块级作用域 {}
    			-- const 常量 不可修改
    		-- 模板字符串
    			-- 反引号``
    			-- 变量 ${}
    		-- 函数
    			-- 普通函数this取决于函数最近的调用者
    			-- 箭头函数this取决当前上下文环境
    		-- 数据的解构
    			-- let [name1, name2, name3] = array;
    			-- let {name, age} = obj;
    			-- 注意语法
    		-- 类
    			-- class定义类
    			-- extends 继承
    			-- constructor 构造方法
    			-- 子类想要有this 在构造方法里执行super()
    	Vue的常用指令
    		-- v-text v-html  innerText  innerHTML
    		-- v-for
    		-- v-if v-else-if v-else  appendChild
    		-- v-show  display
    		-- v-bind  :
    			v-bind指令用于设置HTML属性:v-bind:href  缩写为 :href
    		-- v-on   @
    			v-on 指令用于绑定HTML事件 :v-on:click 缩写为 @click
    		-- v-model
    			-- input
    			-- textarea
    			-- select
    		-- 指令修饰符
    			-- .number
    			-- .lazy
    			-- .trim
    		--自定义指令
    			-- Vue.directive("指令名称", function(el, binding){
    					el是绑定指令的标签元素
    					binding指令的信息
    						value 指令的值
    						指令修饰符
    			})
    		-- 计算属性
    			-- 放入内存 
    			-- 数据改变的时候才会进行重新计算
    		指令后要么接数据要么接方法
    		
    		-- 获取DOM
    			-- 给标签绑定ref= "xxx"
    			-- this.$refs.xxx
    	组件  *****
    		-- 组件的注册
    		-- 全局注册
    			-- Vue.component("组件的名称", {
    				template: ``,
    				data(){
    					return {
    						xxx:xx
    					}
    				}
    			})
    		-- 局部注册
    			-- let my_com = {
    				tempalte: ``,
    				data(){
    					return{
    						xxx: xxx
    					}
    				},
    				methods: {}
    			}
    			-- new Vue({
    				el: "#app",
    				components: {
    					my_com: my_com
    				}
    			})
    		-- 子组件注册
    			let child = {
    		        template: `<div><h2>这是子组件</h2></div>`,
    		    };
    		    let father = {
    		        template: `<div>
    		                    <h1>这是父组件</h1>
    		                    <child></child>
    		                    </div>`,
    		        components: {
    		            child: child
    		        }
    		    };
    
    		    const app = new Vue({
    		        el: "#app",
    		        components: {
    		            
    
    		        }
    		    })
        -- 通信
        	-- 父子通信
        		-- 在父组件给子组件绑定属性 <child :money="num"></child>
        		-- 子组件通过   props: ["money"]
    
        	-- 子父通信
        		-- 子组件提交事件 this.$emit("事件的名称",参数)
        		-- 父组件中给子组件绑定事件  <child @son_say="my_son_say"></child>
        	-- 非父子通信
        		-- 定义中间调度器
    				-- let Event = new Vue()
    			-- 其中一个组件要向中间调度器提交事件
    				-- Event.$emit("事件名称",要传的数据)
    			-- 另一个组件要监听调度器中的事件
    				-- mounted(){
    					Event.$on("事件名称", function(data){
    							do something.....
    					})
    				}
        		-- 注意监听事件时候的this
        -- 混合
        	-- base = 把公共的代码抽出来
        	-- minxins = [base]
        -- 插槽
        	-- 为组件开发内容分发的接口
        	-- 通过slot做内容分发
    	路由:
    		注册
    			-- 定义一个路由和组件的匹配规则对象组成的数组
    			-- 实例化VueRouter对象
    			-- 把实例化的VueRouter对象注册的APP里
    			-- router-link
    			-- router-view
    			
    			
    			let routes = [
       				{
       					path: "/",
       					component: {}
       				}
       			]
       			let router = new VueRouter({
       				routes: routes
       			})
       			new Vue({
       				el: "#app",
       				router: router
       			})
       			-- 展示用 <router-link to="/">首页</router-link>
       			-- <router-view></router-view>
    		子路由的注册
    			-- children: [
    					{
    						path: "xxx",
    						component: {
    							template: ``
    						}
    					}
    				]
    			-- 在父路由里注册children: [{},{}]
       			-- 在父路由的template进行子路由的展示
    		命名的路由
    			-- 注意to要进行绑定 :to="{name: 'xx'}"
    		路由的参数
    			-- path: "/user/:name"
    			-- this.$route
    				-- 路由的所有信息
    				-- fullpath
    				-- path
    				-- params
    				-- query
    				-- meta
    			-- this.$router
    				-- VueRouter 实例对象
       				-- 存放路由的方法
    		命名的路由视图
    			-- 一个路由对应多个组件
    				-- components: {
    					"组件的名称":{
    						template: 
    					}
    				}
    			-- <router-view name="组件名称"></router-view>
    		手动更新路由
    			-- this.$router.push("/")
    		路由的钩子函数
    			-- router.beforeEach(function(to, from, next){
    					to 你要去哪
    					from 你从哪里来
    					next 你接下来要干嘛
    			})
    			-- router.afterEach(function(to, from){
    					to 你要去哪
    					from 你从哪里来
    			})  *****
    	生命周期的钩子函数
    		-- beforeCreate
    		-- created
    		-- beforeMount
    		-- mounted
    		-- beforeUpdate
    		-- updated
    		-- beforeDestroy
    		-- destroyed
    		-- 数据的监听
    			-- watch: {
    				要监听的数据: {
    					handler: function(val, oldVal){
    						字符串
    						数组
    						对象
    					},
    					deep: true
    				}
    			}
    
    MVVM
    M 数据层
    V 视图层
    VM View-Model 给视图提供处理好的数据
    MVC
    MTV
    
    node 本地的js解析环境  npm
    python 本地的python解析环境 pip
    
    今日内容:
    	-- npm
    		-- 管理项目 npm init -y 
    			-- 生成 package.json
    		-- npm install xxx@x.x.x
    		-- npm uninstall xxx
    		
    		npm init -y  (生成package.json文件)
    		nmp i 根据package.json自动生成依赖的模块
    	-- webpack (3 ,  4)
    		-- 打包				
    		-- 压缩代码
    		-- 打包浏览器解析不了的js
    		-- npm install webpack 
    		-- npm install webpack-cli
    		-- webpack4 手动创建入口文件 src目录下的index.js
    		
    		这里用的是4
    		安装webpack	(npm i webpack webpack-cli),安装完后node_modules 里会出现很多包
    		在项目目录下创建文件夹src,并在src下创建入口文件index.js(这里是单入口,可以配置多入口多出口详见博客)
    		使用webpack -v查看版本是否安装成功,
    		webpack --mode development在项目目录下打包文件, development 开发者模式 打包默认不压缩代码; production  生产者模式 上线时使用,压缩代码。 默认是这个模式
    		打包成功后项目目录下会多一个dist目录,dist下面的main.js是默认的出口文件,main.js就是打包后的index.js及index.js引入的js文件,在dist目录下新建index.html文件,在html文件下引入main.js  <script src="./main.js"></script>,这时在浏览器中打开index.html文件就会有在src中写的js的操作了
    		在package.json中"scripts":下添加命令,"bulid":"webpack --mode development",这样就可以使用npm run bulid来执行打包命令了,就不必每次都敲webpack --mode development了
    	-- vue-cli(cli3)
    		-- npm install -g @vue/cli   下的vue-cli3
    		-- vue create 项目名称
    		-- npm run serve
    		
    		全局安装npm install -g @vue/cli,使用vue -V查看vue-cli版本判断是否安装成功
    		创建项目vue create luffy(项目名)   ,会让你选择一个js的语法解析规则,选择默认的就行,不推荐使用淘宝镜像
    		项目目录(luffy文件夹)下会出现node_modules,public,src文件夹,src中的main.js是入口文件,cli帮我们下了vue暴露到全局下 import Vue from 'vue'
    		luffy文件夹下会有一个package.json,这是vue-cli生成的,在package.json中的serve对应的命令是vue-cli-service serve,可以执行npm run serve来执行这条执行,这时可以在浏览器中打开127.0.0.0:8080页面显示vue的图片
    		---node_models安装的包
    		---public
    		   ---index.html 唯一的页面单页面,有id为app的div盒子 <div id="app"></div>
    		---src
    		   ---asstes可以放图片等静态资源
    		   ---components组件文件夹,所有的组件都放到这个文件夹下
    		   ---App.vue 文件,总组件,这个组件包裹其他组件
    		   ---main.js 入口文件通过h => h(App)箭头函数注册App.vue这个总组件;通过.$mount('#app')绑定作用域app
    	
    		下载路由包 		 npm install vue-router
    		安装element-ui   npm i element-ui -S  
    				按照element教程在main.js中填写
    					import ElementUI from 'element-ui';
    					import 'element-ui/lib/theme-chalk/index.css';
    					Vue.use(ElementUI);
    	
    	
    	-- vue-cli目录结构
    		-- node_models
    			-- npm下载的所有的包
    		-- public
    			-- index.html
    			-- 图像
    		-- src
    			-- assets 静态资源
    			-- components  组件
    			-- APP.vue
    			-- main.js  
    	Vuex
    		-- 集中式状态管理架构
    		-- 配置
    			-- npm install vuex 
    			-- import vuex from "vuex"
    			-- Vue.use(vuex)
    			-- let store = new vuex.Store({
    					state: {
    						xxx: xxx
    					},
    					getters: {
    						xxx: function(state, getters){
    							return 处理后的数据
    						}
    					},
    					mutations: {}
    			})	
    			-- const app = new Vue({
    				el: "#app",
    				store: store
    			})
    		-- 获取vuex中的数据
    			-- this.$store.state.xxx
    			-- this.$store.getters.xxx
    		-- 更改vuex中的数据
    			-- this.$store.commit("事件名称",data)
    			-- mutations: {
    				"事件名称": function(state, data){
    						state.xxx = data
    				}
    			}
    	Axios
    		-- 配置
    			-- npm install axios
    			-- import axios from "axios"
    			-- Vue.prototype.$axios = axios
    		-- this.$axios.request({
    			url: "api....",
    			method: "get",
    			data: {},
    			params: {}
    		}).then(function(data){
    			注意this
    		}).catch(function(data){
    
    		})
    		-- 跨域问题
    	restful
    		-- REST 表征性状态转移 (资源状态转移)
    			-- 资源
    			-- URI 统一资源标志符
    			   URL 统一资源定位符
    			-- 统一资源接口
    				-- 对资源只开放一个接口
    				-- 根据HTTP请求方式的不同对资源进行不同的操作
    				-- 一定要遵循HTTP请求方式的语义
    			-- 前后端传递的是资源的表述 并不是资源的本身
    				-- Accept
    					-- 我能够解析的数据类型
    				-- ContentType
    					-- 给你响应的数据类型
    			-- 资源的状态
    			-- 通过超链接的指引来告诉用户还有哪些资源状态可以进入
    		-- restful
    			-- 只要遵循这个REST风格 我们就叫做restful架构
    		-- 规范 10条
    			-- 核心思想
    				-- 面向资源去编程 url尽量用名词 不要用动词
    				-- 根据method不同对资源进行不同操作
    			-- 在url中体现
    				-- 版本
    				-- api
    				-- 过滤条件
    				-- https
    			-- 返回的要求
    				-- 携带状态码
    				-- 返回值
    					-- get 返回查看所有数据
    					-- post 返回新增的数据
    					-- put/patch 返回更新这条数据
    					-- delete 返回值为空
    				-- 返回携带错误信息
    				-- 携带超链接
    

      

  • 相关阅读:
    只需5分钟就能Get到的神器:Python虚拟环境安装&使用
    Linux——28年桌面进化史
    Linux使用Pidstat命令查看进程状态信息
    提高思维能力的书籍推荐你看这本《决策必读12篇》
    管理和自我管理:领导者自我管理的重要性
    带团队看什么书 ?这本书教你提升团队凝聚力
    基于RNN和CTC的语音识别模型,探索语境偏移解决之道
    详解Spring中Bean的作用域与生命周期
    物联网通信技术,那些你不知道的事
    一招教你数据仓库如何高效批量导入与更新数据
  • 原文地址:https://www.cnblogs.com/perfey/p/9852804.html
Copyright © 2020-2023  润新知