1.作用
让标签中无法动态修改的属性可以动态修改
2.v-bind语法糖
1 | v-bind:src='' |
3.基本使用
1 | <div id="app"> |
4.使用v-bind动态修改class
1.对象语法
通过添加v-bind并在类名中以对象的形式
1 |
|
2.数组语法
略微鸡肋,知道有这个东西,以后说不定会用到
让标签中无法动态修改的属性可以动态修改
1 | v-bind:src='' |
1 | <div id="app"> |
通过添加v-bind并在类名中以对象的形式
1 | <!DOCTYPE html> |
略微鸡肋,知道有这个东西,以后说不定会用到
自动遍历渲染相对应的数组内容
1 | <div id="app"> |
tips:注意这里记得使用v-bind:key=’id’**或者:key=’id’**来提高vue渲染器的性能,但是对于实际开发没有任何影响
被修饰的html标签中的mustache语法不会再因为变量内容修改而被修改,优点是可以提高网页性能
1 | <div id="app"> |
v-text跟原生js的**ele.innerText()**有类似的意思
v-html和原生js的**ele.innerHTML()**有类似的意思
1 | <div id="app"> |
让被修饰的标签中的mustache语法失效,从而直接显示双大括号
1 | <div id="app"> |
更推荐使用v-text语法
vue解析之前,div中有一个属性v-cloak
vue解析之后,div中的v-cloak属性被删除
1 | <!--css部分--> |
决定元素是否显示出来
1 | <div id="app"> |
1 | <div id="app"> |
补充:v-if可以和v-for一起使用
1 | <div id="app"> |
结果只显示
1 | 3---age: 22 |
View:Dom树,可视化的部分
View-Model:即我们所用的Vue,分为两部分,分别为DomLinsteners和DataBindings
Model:js代码中自己定义的部分,或者网络上传来的数据
语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
1 | v-on:click='' |
1 | v-bind:src='' |
可以理解为,vue是封装好的,创建的过程中,他会有很多步骤,当你定义了类似于create的生命周期函数之后,他会在做完一些我们看不见的操作之后,将这个function作为回调函数调用,在源码中是以**callHook(vm,fn())**的形式
具体流程
1 | beforeCreate(){} |
题目描述:
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。
相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。
例如,给定三角形:
1 | [ |
自顶向下的最小路径和为 11
(即,2 + 3 + 5 + 1 = 11)。
思路:
自下而上,可以更好的推进最小路径,否则需要多次判断。
实现:
1 | var minimumTotal = function(triangle) { |
1 | import java.text.DecimalFormat; |
1 | import java.util.Scanner; |
1 | import java.util.ArrayList; |
现在各个博客平台,要么免费有广告,要么就收费,让喜欢当白嫖党的我们烦躁不已。所以,想不想拥有一个炫酷的个人博客来展示自己呢?本文将为你介绍如何从头搭建一个hexo个人博客(完全免费的噢!)。
博客架构: hexo+gitee page/github page
下载Git,安装一路next
下载Node.js,安装一路next
1 | // 安装指令 |
1 | hexo init yourBlogName |
1 | hexo g |
然后我们就可以访问hexo主页了,是不是很惊喜!
这个是为了我们后面上传到gitee做准备
1 | npm install hexo-deployer-git --save |
在我们对hexo的配置或者是内容修改后,都需要进行重新构建,这两个命令会经常用到
1 | hexo clean |
自己操作
查看自己的地址栏,gitee.com后面带的就是你的id了
tips:可以给自己起一个好听的英文名字,然后在个人信息中替换掉,以后你把网站给别人的时候,别人看到你的网站名字才足够优雅!
右上角加号创建仓库
仓库名字就填你的id,一摸一样就可以
因为我已经创建过了,所以存在,下方的选项自己看情况勾选
复制仓库地址
打开你刚刚创建hexo的地方,找到_config.yml这个文件,使用记事本或者说sublime打开
拉到最下面,将仓库地址填入repo关键字后面,注意冒号后面有一个空格,其余两个关键字跟我一样
然后ctrl+F找到url,填写将来你生成出来的网站地址https://yourId.gitee.io, 只有严格按照上面仓库命名才可以噢!
使用前面说的重新构建的命令
1 | hexo clean |
这个时候会要求你输入gitee的账号密码,输入之后即可上传到你所创建的仓库内
配置ssh密钥可以免密码输入,具体百度,本文不过多介绍
点击
勾选强制使用https
点击部署or更新
注意,以后每一次上传完文章都要来这里点击更新(这个是相对于github不好的地方,可是谁叫它加载快呢!只能是含泪接受它的缺点了)
在地址栏输入 yourGiteeName.gitee.io即可访问你的hexo博客啦!
自己操作
命名要跟自己的用户名一样,才能开启github page,一定要按照这个规则来噢!
将地址以下图形式粘贴到_config.yml文件中,并补充相应的内容
然后将https://yourGithubName.github.io粘贴到以下位置
保存_config.yml文件
执行
1 | hexo clean |
部署这一步是github自动的,比gitee要优秀的多
这个时候在地址栏输入yourGithubName.github.io即可访问你的hexo博客啦!
一般在路径C:\Windows\System32\drivers\etc下,正常情况下没办法直接修改host文件,可以复制出来,然后修改完在复制回去,然后确认管理员权限即可
最后,按照以下格式添加到host文件的最后面
1 | 140.82.114.3 github.com |
将ipv4协议的DNS解析地址修改为114.114.114.114
后进先出、受限制的线性结构
通过js的数组,能够轻松完成封装其所有基本功能
1 | function Stack(){ |
问题描述:
给定一个整数,将其转化为7进制,并以字符串形式输出。
示例 1:
1 | 输入: 100 |
示例 2:
1 | 输入: -7 |
代码
1 | var convertToBase7 = function(num) { |
mode:默认为hash模式,不方便使用history.pushState
linkActiveClass:用于将渲染出来的html文件中的router-link-active|Class替换成active,便于代码维护
1 | import Vue from 'vue' |
1 | <router-link to="/home" tag="button" replace>首页</router-link> |
1 | this.$router.push('/home'); |
push可以通过浏览器左上方的前进后退记录,原理跟栈差不多
replace不行
1 | <router-link :to="'/user/'+userId" tag="button" replace>用户</router-link> |
1 | data: function(){ |
这里to属性需要使用冒号修饰,保证可以使用data中的属性
使用this.$route.params.userId获取
router是指整个对象
route是指当前活跃的路由对象
1.结合vue异步组件和Webpack的代码分析(过于复杂,不推荐)
2.AMD写法
1 | const Home = resolve => require(['../components/Home.vue'],resolve); |
3.ES6写法(推荐)
1 | const Home = () => import('../components/Home.vue'); |
父组件中
1 | <router-link :to="{path:'/profile',query:{name: 'Jamie',age:'22',height:'1.70'}}" tag="button" replace>档案</router-link> |
子组件中
1 | <template> |
父组件中
1 | <router-link :to="''/user/'+userId" tag="button" replace>用户</router-link> |
子组件中d
1 | this.$route.params.userId |
在**/router->index.js中,覆盖了router组件的beforeEach**生命周期函数
1 | router.beforeEach((to, from, next) => { |
切换到兄弟组件时,保存当前组件中子组件的选中状态,下次返回该组件的时候访问该子组件
1 | export default{ |
阻止多余的同名路由跳转,节省浏览器资源
跳转路由的时候,多加一层判定,判断原路由与目标路由是否相同,若不同则切换路由
1 | if(this.$route.path != nextPath){ |
关于router源码部分在视频第113集
描述
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
1 | 输入:nums1 = [1,2,2,1], nums2 = [2,2] |
示例 2:
1 | 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] |
思路:
实现:
1 | var intersect = function(nums1, nums2) { |