Vue不支持IE8以及以下版本。
想要使用Vue的话可以通过直接下载vue.js,放置到项目中写好路径就可以,或者直接通过CDN引入https://cdn.jsdelivr.net/npm/vue/dist/vue.js,当然,在构建大型应用时推荐使用NPM安装(目前还没用到,用到再说)
Vue是一个MVVM框架
一个简单的例子:
html:
{{ message }}
js:
var app=new Vue({
el:"#app1",
data:{
message:'Hello world'
}
});
上面的代码就相当于把id为app1的div
元素和一个Vue实例绑定了起来(通过传入Vue的对象的el
属性来和html元素绑定)。这时候Vue将数据和DOM建立了关联,是响应式的,比如可以通过打开页面之后打开页面的控制台,手动修改app1.message
就可以看到页面上自动更新了。
上面html中的这种绑定方式是使用“Mustache”语法 (双大括号) 的文本插值(Mustache就是胡子的意思)
v-bind
是一个指令,可以单向绑定DOM和数据,说是单向其实就是说数据变了之后DOM的value
值和显示也会变化,但是DOM的value
变了之后(例如在input元素中),数据不会改变。例子:
html:
鼠标悬停几秒钟查看此处动态绑定的提示信息!
js:
var app2 = new Vue({
el: '#app2',
data: {
message: 'This is a message'
}
});
这样当鼠标悬停在span
元素上时,就会看到这段message。在控制台中修改app2.message之后也会立刻在DOM上反映出来。
创建Vue实例是通过Vue(构造)函数来创建的,通过new关键字,Vue构造函数接受一个参数,该参数是一个对象,称为选项对象,可以直接在创建时候写一个对象,也可以先创建好一个对象再传入,即下面两种方式均可:
var vm = new Vue({
el: '#some-id',
data: {
message: 'This is a message'
}
});
var obj = {
el: '#some-id',
data: {
message: 'This is a message'
}
}
var vm = new Vue(obj);
上面两种方式均可,不过若是第二种方式,需要对象中的属性名(key)与标准的选项对象中的属性名一样,即名字必须为el
、data
、methods
等。
选项对象中的属性分别为:
el
绑定DOM元素,是一个字符串类型,格式为'#id'
data
用于存放属性、数据等,也是一个对象,数据都存在data对象内部
methods
用于存放方法,DOM事件处理函数,是一个对象,函数方法存在对象内部
computed
存放计算属性,所谓计算属性,就是逻辑比较多的属性,是一个对象,计算属性存放在computed对象内部,同时,计算属性本身是一个函数,函数内部是计算的逻辑。
watch
侦听器,存放要侦听的数据,是一个对象,属性的名字(key)为要侦听的数据,属性的值为一个函数,即数据发生变化时要执行的回调函数。
等等
上面这些属性,都会被初始化为Vue实例的属性,并且是绑定的是响应式的,即:
// 我们的数据对象
var data = { a: 1 }
// 该对象被加入到一个 Vue 实例中
var vm = new Vue({
data: data
})
// 获得这个实例上的属性
// 返回源数据中对应的字段
vm.a === data.a // => true
// 设置属性也会影响到原始数据
vm.a = 2
data.a // => 2
// ……反之亦然
data.a = 3
vm.a // => 3
值得注意的是只有当实例被创建时 data 中存在的属性才是响应式的。也就是说如果你添加一个新的属性,比如:
vm.b = 'hi'
那么对 b 的改动将不会触发任何视图的更新。如果你知道你会在晚些时候需要一个属性,但是一开始它为空或不存在,那么你仅需要设置一些初始值,如:
data: {
newTodoText: '',
visitCount: 0,
hideCompletedTodos: false,
todos: [],
error: null
}
在使用Object.freeze()
冻结传入的选项对象之后,Vue的响应系统无法再追踪变化。
当然,如果要想访问选项对象的属性,Vue提供了前缀$
:
var data = { a: 1 }
var vm = new Vue({
el: '#example',
data: data
})
vm.$data === data // => true
vm.$el === document.getElementById('example') // => true
// $watch 是一个实例方法
vm.$watch('a', function (newValue, oldValue) {
// 这个回调将在 `vm.a` 改变后调用
})
Vue的模板语法:
常规的Mustache语法,例如插入到p
、span
标签内
如果想要插入原始html,则需要使用v-html
指令
如果想要为DOM元素绑定属性(或者称为特性,例如src、style、class或者其他自定义的特性),那么就不能用Mustache语法了,需要用v-bind
指令,如:
。v-bind
的特殊之处在于,使用了v-bind
之后,后面的双引号中的,就不再是一个字符串了,即这个例子中的div
元素的title属性的值不是"myTitle"这个字符串,而是对应的Vue实例(假设名字是vm)中的myTitle这个变量的值,即div
的title值为vm.myTitle
。所以,如果单纯的想传一个字符串给元素的属性(特性),就不要加v-bind
或者前面加:
,这点在组件的prop传值的时候也是这样的。
Vue的模板语法除了可以插入常规字符串之类的,还可以插入JavaScript表达式,如:
html:
{{ number + 1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
这些表达式会在所属 Vue 实例的数据作用域下作为 JavaScript 被解析。有个限制就是,每个绑定都只能包含单个表达式,所以下面的例子都不会生效:
html:
{{ var a = 1 }}
{{ if (ok) { return message } }}
Vue指令都是带有v-
前缀的特殊特性。常见指令有以下这些:
v-bind
用于绑定,上面说过了,还有就是组件的prop传值时用。
v-on
用于绑定DOM事件。
v-if
条件判断,条件渲染
v-for
v-model
上面的指令中,v-bind
和v-on
可以被简写,如下:
html:
...
...
...
...
html:
Original message: "{{ message }}"
Computed reversed message: "{{ reversedMessage }}"
js:
var vm = new Vue({
el: '#example',
data: {
message: 'Hello'
},
computed: {
// 计算属性的 getter
reversedMessage: function () {
// `this` 指向 vm 实例
return this.message.split('').reverse().join('')
}
}
})
运行结果为:
Original message: "Hello"
Computed reversed message: "olleH"
计算属性也可以用vm.reversedMessagge
来访问,并且它的值始终依赖于vm.message
,后者改变前者也响应式地改变。
使用计算属性的地方也可以通过调用方法来实现,例如:
html:
Reversed message: "{{ reversedMessage() }}"
js:
methods: {
reversedMessage: function () {
return this.message.split('').reverse().join('')
}
}
我们可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。然而,不同的是计算属性是基于它们的依赖进行缓存的。计算属性只有在它的相关依赖发生改变时才会重新求值。这就意味着只要 message
还没有发生改变,多次访问 reversedMessage
计算属性会立即返回之前的计算结果,而不必再次执行函数。相比之下,每当触发重新渲染时,调用方法将总会再次执行函数。
我们为什么需要缓存?假设我们有一个性能开销比较大的计算属性 A,它需要遍历一个巨大的数组并做大量的计算。然后我们可能有其他的计算属性依赖于 A 。如果没有缓存,我们将不可避免的多次执行 A 的 getter!如果你不希望有缓存,请用方法来替代。
计算属性处理getter也可以设置setter:
// ...
computed: {
fullName: {
// getter
get: function () {
return this.firstName + ' ' + this.lastName
},
// setter
set: function (newValue) {
var names = newValue.split(' ')
this.firstName = names[0]
this.lastName = names[names.length - 1]
}
}
}
// ...
new Vue({
el:'#id',
data:{
str:'some message'
},
watch:{
str:function(oldStr,newStr){
//...
}
}
});
class绑定 绑定DOM元素的class
就是前面说到的用v-bind
,但是在绑定class
和style
时,可以传入对象和数组:
html:
js:
data: {
isActive: false,
hasError: true
}
在上面的例子中,active
和text-danger
这两个class
是否存在取决于对应的Vue实例中的属性isActive
和hasError
的真值,同时在Vue中动态的class
可以和普通的class并存,所以前面可以还有一个class
,所以上面的渲染结果就是:
html:
class
绑定的数据对象不一定非要内联在模板中,也可以直接就是一个对象,还可以是一个计算属性:
html:
js:
data: {
classObject: {
active: true,
'text-danger': false
}
}
除此之外,还可以是一个数组(甚至数组中还可以内嵌对象模板):
html:
js:
data: {
isActive: true,
errorClass: 'text-danger'
}
渲染为:
html:
如果是在自定义组件上,这些类会被添加到该组件的根元素上,这个元素上已经存在的类不会被覆盖: js:
Vue.component('my-component', {
template: 'Hi
'
})
html:
如果isActive
的真值为真,则最终被渲染为:
html:
Hi
绑定内联样式 绑定CSS样式时,也是用上面提到的v-bind
指令,然后让DOM元素的style
属性(特性)等于一个对象或者数组即可:
html:
js:
data: {
activeColor: 'red',
fontSize: 30
}
或者直接绑定到一个样式对象通常更好,这会让模板更清晰:
html:
js:
data: {
styleObject: {
color: 'red',
fontSize: '13px'
}
}
当然,也可以绑定到一个数组,数组的元素为多个样式对象。
v-if
条件渲染,用法为Yes
,表示这个DOM元素对于的Vue实例(假设为vm)中的属性vm.ok
为真时渲染h1
这个元素。与v-if
配合使用的经常有v-else
、v-else-if
。如果想要用v-if
一条指令条件渲染多个元素,那么应该用一个
元素包裹起来,最终渲染结果不包括
元素:
html:
Title
Paragraph 1
Paragraph 2
在v-if
条件渲染时,Vue会高效地渲染元素,会复用一些已有的元素,而不是从头开始渲染:
html:
Username
Email
这样的话在切换loginType
时,不会清除用户已经输入的内容,因为这两个模板使用了相同的元素,
不会被替换掉除了placeholder
。如果想Vue不要复用,则需要为相同的元素添加不同的key
属性来表示这两个元素是完全独立的:
html:
Username
Email
当然了,上面的label
还是复用了,因为没有给它添加key
属性。
v-show
功能看起来和v-if
差不多,也是可以根据条件来做一些判断,它是根据条件展示元素,而不是渲染元素,和v-if
不同的是,v-show
的元素始终会被渲染并被保留在DOM中,v-show
只是简单地切换元素的CSS属性dispaly
。而且v-show
也不支持template
和v-else
v-if
是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。
v-if
也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。
相比之下,v-show
就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于CSS进行切换。
一般来说,v-if
有更高的切换开销,而v-show
有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用v-show
较好;如果在运行时条件很少改变,则使用v-if
较好。
当v-if
和v-for
一起使用时,v-for
的优先级更高。
对于选择框元素来说(select
包围着option
),select
元素的值(value
)是选中的option
的value
,如果option
没有value
属性,那么option
的值就是option
开始和结束标签之间的值
在事件处理时,子组件抛出的事件的名称只能是kebab-case的(其实是建议用kebab-case),而不能是camelCased的,因为HTML是大小写不敏感的,所以在DOM模板中使用camelCase会自动全部转换为小写,所以监听不到在组件定义中抛出的事件。
在组件上使用v-model
时,子组件抛出的事件不能使用自定义的名称
有些 HTML 元素,诸如
、
、和
,对于哪些元素可以出现在其内部是有严格限制的。而有些元素,诸如
、和
,只能出现在其它某些特定的元素内部。
这会导致我们使用这些有约束条件的元素时遇到一些问题。例如:
这个自定义组件
会被作为无效的内容提升到外部,并导致最终渲染结果出错。幸好这个特殊的is
特性给了我们一个变通的办法:
在对组件传prop
值时,如果传入的值是数组、数字、布尔值或者对象这些,都需要用v-bind
来传,因为使用了v-bind
之后,后面的双引号中就不再是一个字符串,而是一个JavaScript表达式,这点在上面也提到过。
自定义组件的v-model
组件的prop在js代码中可以使用驼峰式命名,然后在对应的HTML传值的时候要使用kebab case。而在组件的抛出事件中,事件名称始终建议使用kebab case,不论是在js中还是在html中。
[x] 非prop的属性(inheritAttrs: false
和$attrs
合用)
非prop的属性就是组件没有相应的prop定义,但是却传给了该组件的那些特性,例如:
在上面的例子中,除了class
和style
会被合并到组件模板中(根元素上)对应的class
和style
,模板中(根元素上)的propA
会被覆盖掉。如果不想被覆盖掉可以在组件定义中添加inheritAttrs: false
选项来禁用特性继承。同时inheritAttrs: false
可以和$attrs
合用,来指定将非prop特性传给模板中的那个元素而不必担心模板根元素是哪个。详见非prop的特性
vm.$attrs
:包含了父作用域中不作为 prop 被识别 (且获取) 的特性绑定 (class 和 style 除外)。当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class 和 style 除外),并且可以通过 v-bind="$attrs" 传入内部组件——在创建高级别的组件时非常有用。
[x] 将原生事件绑定到组件
使用.native
修饰符可以将原生DOM事件直接添加到组件上,而不用添加到组件模板上再抛出,例如:
这个时候focus事件会被添加到base-input
组件模板的根元素上。详见将原生事件绑定到组件
[x] 作用域插槽
对于作用域插槽可以理解为子组件可以向父组件传递参数,在父组件中使用template
标签,这个标签有个scope
属性(在Vue2.5之后不建议用这个属性了,换成了slot-scope
),这个属性可以获得子组件中的slot的prop,是一个对象,可以被重新命名,即scope="aNewName"
,之后就可以通过aNewName
来访问子组件的prop了。注意,如果插槽是具名插槽,那么父组件中要想获得插槽prop,那么就必须指明slot,如slot="slot1"
;如果插槽是匿名的,那么就可以直接使用slot-scope
属性来获取prop。
[ ] 异步组件
[ ] 处理边界情况
直接在HTML标签中添加v-on
绑定原生事件的时候,$event
可以用来访问原生DOM事件,如
html:
some text
js:
methods:{
handlleClick:function(message,event){
event.preventDefault();
window.alert(message);
}
}
通过$emit
子组件抛出事件,$event
则代表传递的参数。
简单来说,就是方法名中传入$event
表示原生dom事件(虽然在实际开发中发现,就算不传$event
参数,也可以在方法内部访问到dom事件event),在$emit
抛出事件时,父组件(在事件处理函数不是一个方法的情况下)可以通过$event
访问$emit
传入的第一个参数($emit('my-event',0.1,0.2)
,类似于这样,父组件直接通过v-on
来监听,在事件处理不是一个方法的情况下,通过$event
可以访问到0.1
这个参数)
组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件(即抛出的事件名为input
),但是可以在定义组件时添加一个model选项来更改prop名和event名
Vue.extend()
接收一个包含组件选项的对象的参数,相当于是创建了Vue
的一个带有一些参数的子类,可以用new关键字来创建一个组件 实例,之后可以手动挂载到DOM元素上
Vue在组件中定义的组件data选项中的数据不是响应式更新的
可以给事件中心(eventHub
或者称为bus
)添加data、methods、computed等选项来扩展bus示例,这些都是可以共用的。
$event
详解
click here
methods:{
funcA(e){
console.log(e);//可以访问到event事件
}
}
在@click
绑定一个方法(不加括号)调用时,可以直接在funcA中访问到event事件
click here
methods:{
funcA(message){
console.log(message);
console.log(e);//访问不到event事件
}
}
但是像下面这样:
click here
methods:{
funcA(message){
console.log(message);
console.log(event);//可以访问到event事件
}
}
或者这样:
click here
methods:{
funcA(message,e){
console.log(message);
console.log(e);//也可以访问到event事件
}
}
子组件通过$emit
抛出事件时,除去第一个参数(因为第一个参数是抛出的事件的名字,例如my-click
),剩下的参数都可以在父组件的对应方法中的参数列表接收到。如果父组件的事件处理函数是一个表达式,那么就只能通过$event
访问到子组件通过$emit
抛出的参数中的第一个值。
可以直接在vue实例绑定的div
(或者其他元素)中写html代码,也可以不在html中写,写在vue实例的template
选项中或者通过render
函数渲染(以前一直以为只要vue组件才能有template
和render
,才知道vue实例也可以),这样也能起到相同的效果,在template
或者render
中,也可以使用组件,和在html中使用一样。写在html中和写在vue实例中唯一的区别就是,写在vue实例中的模板或者render,最终会替换掉vue实例绑定的那个div
(或者其他元素),而不是像往常一样会成为div的子节点
Vue中书写模板的几种方法:
直接写在组件的template
标签中,用" ` ` "包围或者用''
包围。缺点是书写不方便
在html文件中写,用
或者
包围模板,之后在组件的template
选项中引入id就行,类似于el
选项。缺点是组件模板会直接暴露在网页源代码中
内联模板。缺点是作用域混乱,难以理解。
写在单独的html文件中,之后在组件中通过import
引入。缺点是需要webpack和babel的支持,无法直接使用
单文件组件,即.vue
文件。缺点也是需要webpack和babel等的支持,但是适合较大的项目
结论就是,小的项目(不需要使用打包工具时)建议直接写在template
选项中,但是在稍微大点的项目中建议使用第4点和第5点的方法,特别是第5点中的单文件组件。
Vue的构建方式分为两种,一种是独立构建,一种是运行时构建,这两种构建的区别如下:
独立构建:拥有完整的模版编译功能和运行时调用功能,即拥有模板编译器
运行时构建:只拥有完整的运行时调用功能,即不含模板编译器
上面的话的意思就是说,独立构建包含模板编译器,可以将template选项编译成render函数,render函数是渲染的关键。基于此,使用运行时构建时,不能出现template选项,index.html中也不要出现模板或者是通过vue-router渲染的route-view,因为此时没有模板编译器。但是有一种情况除外:即webpack+vue-loader情况下单文件组件中出现template是可以的。所以运行时构建只能在.vue
文件中使用模板或者在需要使用模板的地方使用render函数。在使用vue-cli生成项目时,会提醒使用哪种构建模式,npm包默认导出的是运行时构建,如果需要使用独立构建,需要在webpack中配置alias,如下:
resolve:{
// ...
alias:{
'vue$':'vue/dist/vue.js'
}
// ...
}
值得注意的是,通过script
标签引入的vue是独立构建方式,通过npm install
安装后使用,默认使用的是运行时构建 以下是官方话术:
独立构建包括编译和支持 template 选项。 它也依赖于浏览器的接口的存在,所以你不能使用它来为服务器端渲染。
运行时构建不包括模板编译,不支持 template 选项。运行时构建,可以用 render 选项,但它只在单文件组件中起作用,因为单文件组件的模板是在构建时预编译到 render 函数中,运行时构建只有独立构建大小的 30%,只有 16Kb min+gzip 大小。
Vuex中的mapState
、mapGetters
、mapMutations
,在传入一个数组时,需要映射的计算属性的名称与state
或getters
的子节点名称(或者方法名称与mutations
的子节点名)相同,这时数组的元素都是字符串,如下:
computed: mapState([
// 映射 this.count 为 store.state.count
'count'
])
在传入一个对象时,可以给state
或getters
中的属性另外起个别名,或者写成计算属性的形式:
computed: mapState({
// 箭头函数可使代码更简练
myCount: state => state.count,
// 传字符串参数 'count' 等同于 `state => state.count`,相当于给count起了个别名叫countAlias
countAlias: 'count',
// 为了能够使用 `this` 获取局部状态,必须使用常规函数
countPlusLocalState (state) {
return state.count + this.localCount
}
})
如果想要给getter
(或者计算属性也可以?)传参,那么就要让getter
返回一个函数
通过commit
或dispach
调用mutations
或actions
中的方法时传值只能传一个,即第一个参数是方法名,第二个参数是要传的值,想要多传几个值的话需要将param全部写到一个对象里当做第二个参数传进去,因为第三个参数是带命名空间的模块内访问全局内容时的options
,是一个Object
,例如commit('someMutation', null, { root: true })
将store切割成模块之后,导入模块a,那么模块a内的getters
、mutations
、actions
都会自动添加到store实例的getters
、mutations
、actions
中,而模块a的state
,则是变成了一个对象,放在store的state
中,如下:
{
"count": 0,
"todos": [{"id": 1,"done": false},{"id": 2,"done": true }],
"a": {
"countA": 0,
"anotherState":"xxx"
}
}
在严格模式中(这里指的是Vuex的严格模式,而不是JavaScript的严格模式),因为不能直接修改state
中的值,所以无法正常地使用v-model
来绑定返回了state
中属性的计算属性,解决方法就是手动实现v-model
或者给要绑定是计算属性添加一个setter
函数
你可能感兴趣的:(Vue.js学习总结)
element实现动态路由+面包屑
软件技术NINI
vue案例 vue.js 前端
el-breadcrumb是ElementUI组件库中的一个面包屑导航组件,它用于显示当前页面的路径,帮助用户快速理解和导航到应用的各个部分。在Vue.js项目中,如果你已经安装了ElementUI,就可以很方便地使用el-breadcrumb组件。以下是一个基本的使用示例:安装ElementUI(如果你还没有安装的话):你可以通过npm或yarn来安装ElementUI。bash复制代码npmi
博客网站制作教程
2401_85194651
java maven
首先就是技术框架:后端:Java+SpringBoot数据库:MySQL前端:Vue.js数据库连接:JPA(JavaPersistenceAPI)1.项目结构blog-app/├──backend/│├──src/main/java/com/example/blogapp/││├──BlogApplication.java││├──config/│││└──DatabaseConfig.java
《算法》四学习——1.1节
进阶的Farmer
算法 算法 笔记
前言买了一本算法4,每天看一点,对每个小结来个学习总结,输出驱动输入。本篇笔记针对第一章基础1.1基础编程模型1.1节总结了相关的语法、语言特性和书中将会用到的库。笔记自己在编码中容易遗漏的点&&优先级比||高在开发中习惯了加括号,所以没注意到这点,教材上也有但是忘记了二分查找中计算mid=left+(right-left)/2这样计算可以有效避免(left+right)/2溢出答疑java无穷大
网关gateway学习总结
猪猪365
学习总结 学习总结
一微服务概述:微服务网关就是一个系统!通过暴露该微服务的网关系统,方便我们进行相关的鉴权,安全控制,日志的统一处理,易于监控的相关功能!实现微服务网关技术都有哪些呢?1nginx:nginx是一个高性能的http和反向代理web的服务器,同事也提供了IMAP/POP3/SMTP服务.他可以支撑5万并发链接,并且cpu,内存等资源消耗非常的低,运行非常的稳定!2Zuul:Zuul是Netflix公司
【前端】vue 报错:The template root requires exactly one element
程序员-张师傅
前端 前端 vue.js javascript
【前端】vue报错:Thetemplaterootrequiresexactlyoneelement在Vue.js中,当你遇到错误“Thetemplaterootrequiresexactlyoneelement”时,这通常意味着你的Vue组件的模板(template)根节点不是单一的元素。Vue要求每个组件的模板必须有一个根元素来包裹所有的子元素。这个错误通常出现在以下几种情况:模板中有多个并行
说说在 Vue.js 中如何实现组件间通信
deniro
1用法假设父组件的模板包含子组件,我们可以通过props来正向地把数据从父组件传递给子组件。props可以是字符串数组,也可以是对象。html:js:Vue.component('deniro-component',{props:['message'],template:'{{message}}'});varapp=newVue({el:'#app',data:{}});渲染结果:"嫦娥四号"成功
document获取元素的方法
小成语
js 平时 js
js学习总结----DOM获取元素的方法(8个)DOM:documentobjectmodel文档对象模型DOM就是描述整个html页面中节点关系的图谱,可以如下图理解在DOM中,提供了很多的获取元素的方法和之间关系的属性以及操作这些元素的方法。1、获取页面中元素的方法1)、document.getElementById('元素的ID')在整个文档中,通过元素的ID获取到这个元素对象(获取的是一个
10/24 每周学习总结5
木木ainiks
1024程序员节
1RecordingtheMoolympicsS#include#includeusingnamespacestd;typedeflonglongint_1;intn;structnode{int_1begin_b;int_1end_e;}a[300];boolcmp(nodea,nodeb){if(a.end_e==b.end_e)returna.begin_b>b.begin_b;return
Day25_0.1基础学习MATLAB学习小技巧总结(25)——四维图形的可视化
非常规定义M
0.1基础学习MATLAB 学习 matlab 开发语言 SIMULINK 数学建模
利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。参考书目:1、《MATLAB基础教程(第三版)(薛山)》2、《MATLABR2020a完全自学一本通》之前的章节都是基础的数据运算用法,对于功课来说更加重要的内容是建模、绘图、观察数据趋势,接下来我会结合自己的使用经验,来为大家分享绘图、建模使用的小
幸福感恩日记第15篇
豫豫妈
2018.7.3豫豫妈早课心得:1、这个世界外面没有别人,只有自己。一切都是自己的问题。2、每个人都不是完美的,学会转念,高效沟通。3、讲好每句话也是阴阳并存的,一阴一阳之谓道。4、坚持读经,早起学习,记笔记及时内化,学以致用才能正确的引导孩子。5、一个工具,二个方法,一个核心;五个步骤,僵化学习、固化学习、内化学习、优化学习、变化学习运用易经思维进行学习总结。方法:如果----那么----有点像
python基于django/flask的NBA球员大数据分析与可视化python+java+node.js
QQ_511008285
python django flask java spring boot 数据分析
前端开发框架:vue.js数据库mysql版本不限后端语言框架支持:1java(SSM/springboot)-idea/eclipse2.Nodejs+Vue.js-vscode3.python(flask/django)--pycharm/vscode4.php(thinkphp/laravel)-hbuilderx数据库工具:Navicat/SQLyog等都可以本文针对NBA球员的大数据进行
Java基于spring boot的国产电影数据分析与可视化python+java+node.js
QQ_511008285
java spring boot 数据分析 python django vue.js flask
前端开发框架:vue.js数据库mysql版本不限后端语言框架支持:1java(SSM/springboot)-idea/eclipse2.Nodejs+Vue.js-vscode3.python(flask/django)--pycharm/vscode4.php(thinkphp/laravel)-hbuilderx数据库工具:Navicat/SQLyog等都可以 该系统使用进行大数据处理和
Vue插槽:提升Vue组件灵活性的利器
anyup_前端梦工厂
Vue.js 前端 javascript vue.js
一.介绍什么是插槽插槽是Vue.js中一种强大的组件封装机制,用于在组件间复用可以动态填充的内容。简而言之,插槽允许我们在组件的模板中定义一些可变的区域,在使用组件时,可以灵活地填充不同的内容进入这些区域。当我们的组件有一些需要在使用组件时才能确定的内容时,比如按钮、文字、图标等,使用插槽可以非常方便地将这些内容传递给组件。二.基础插槽1.单个插槽单个插槽也可以称为默认插槽(DefaultSlot
前端同学必备:教你如何安装、使用Chrome的vue-devtools插件
界忆
前端编程 Vue-devtools插件 chrome devtools
I.介绍vue-devtools插件Vue-devtools是一个Chrome浏览器插件,它是一个浏览器调试工具,用于开发Vue.js应用程序。它可以用于Vue.js应用程序的调试,可以更好地了解应用程序的结构和状态,以及帮助快速修复代码错误。Vue-devtools插件的作用和优势如下:1.调试Vue.js应用程序:Vue-devtools是一个强大的调试工具,可以帮助开发人员正确地调试应用程序
python毕业设计作品:python闲置物品二手交易平台系统设计与实现毕业设计源代码(Django框架)
黄菊华老师
毕设资料 python二手交易平台系统
博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书、PPT、论文模版等项目都录了发布和功能操作演示视频;项目的界面和功能都可以定制,包安装运行!!!如果需要联系我,可以在CSD
uni-app开发微信小程序
hong161688
uni-app 微信小程序 小程序
uni-app是一个使用Vue.js开发所有前端应用的框架,它支持编译到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/字节跳动/QQ/京东等)平台。使用uni-app开发微信小程序,可以充分利用Vue.js的开发效率和小程序平台的原生能力,实现跨平台的高效开发。以下将详细介绍使用uni-app开发微信小程序的全过程,包括项目搭建、开发、调试、测试及发布等环节,内容将尽量达到或超
使用 uni-app 开发微信小程序:深入教程与技巧
代码伐木匠
笔记本 uni-app 微信小程序 notepad++
使用uni-app开发微信小程序:深入教程与技巧uni-app是一个使用Vue.js语法开发跨平台应用的框架,能够编译到iOS、Android、H5、微信小程序等多个平台。通过uni-app,你可以一套代码同时生成多个端的应用,极大提升开发效率。本文将带你深入了解如何使用uni-app开发微信小程序,并提供大量实践经验与技巧。1.环境配置与项目创建要开始使用uni-app开发微信小程序,首先需要搭
Vue Router push方法的使用
hzw0510
Vue vue.js 前端 javascript
VueRouterpush方法的使用this.$router.push是VueRouter提供的一个方法,用于在Vue.js应用中进行编程式导航。它的作用是将用户导航到应用中的不同路由。基本作用this.$router.push方法会在浏览器历史记录中添加一个新的记录,并导航到指定的路由。它的工作方式类似于点击一个组件,或者在浏览器中手动输入URL后点击回车。使用示例以下是一些使用this.$ro
【驻村】费晓琴2020.04.10工作日志和学习总结
aaf247918939
工作日志1、5:20好视通唱班歌签到传家书2、读经典小打卡,驻村群读小村大道3、练八锻锦,练习4、下午宋书记、尹老师、小村大道作者郑旺盛和村两位来看望回村的志愿者学习感悟生活中的纷纷扰扰,可归结为一个字,争!这个世界的吵门市,喧嚣,摩擦,抱怨,勾心斗角,尔虞我诈,都源自争!在日常生活中,心胸开阔一点,就争不起来,得失看轻一点,就争不起来,功利心淡一点,就争不起来,为他人考虑略多一点,就更争不起来,
组件通信——provide 和 inject 实现爷孙组件通信
你不讲 wood
javascript vue.js 前端
provide和inject实现爷孙组件通信介绍provide和inject是Vue.js提供的一种在组件之间共享数据的机制,它允许在组件树中的任何地方注入依赖项。这对于跨越多个层级的组件间通信特别有用,因此无需手动将prop数据逐层传递下去。provide:在一个组件中使用provide方法来定义要提供的数据或方法。provide方法返回一个对象,该对象包含了要提供的数据或方法。inject:在
vue.js在js里获取属性,触发vue.js内的方法
摸鱼的张三
javascript vue.js flutter
在script标签内把appVue设置varvarappVue=newVue({})appVue不能跨标签也就是说不能这样写varappVue=newVue({})console.log(appVue)上面这个是错的varappVue=newVue({})console.log(appVue)这个是vue2.js的版本这样写可以vue3.js是没有的然后拿到appVue就可以绑定原生事件触发app
Vue 图片预览功能实现指南
繁依Fanyi
vue.js 前端 javascript python 人工智能 算法 开发语言
1.介绍在现代web应用程序中,图片预览功能提升了用户体验,使用户可以在上传图片之前查看图片内容。本文将详细介绍如何在Vue.js应用中实现图片预览功能,包括基本实现、进阶功能、与ElementUI的集成、常见优化技巧以及与其他库的结合使用。2.基本功能实现2.1环境准备确保你的开发环境已经配置好,包括VueCLI和Node.js。如果还没有安装VueCLI,你可以通过以下命令安装:npminst
前后端分离,Asp.net core webapi 如何配置跨域
代码掌控者
C# asp.net core .net core 经验分享 c#
前言可以说,前后端分离已经成为当今信息系统项目开发的主流软件架构模式,微服务的出现,让前后端分离发展更是迅速,大量优秀的前端框架如vue.js、react的出现,也让前后端分离趋势加快。所谓的前后端分离软件架构模式,就是指将前端和后端的开发完全分离,后端负责提供API接口和数据处理,而前端通过各种现代的JavaScript技术如AJAX或者Fetch等,来调用后端提供的API接口获取数据,从而构建
Uni-app 开发微信小程序
vvvae1234
uni-app
随着移动互联网的发展,微信小程序已经成为一种流行的应用开发模式。Uni-app作为一种跨平台的开发框架,使用Vue.js语法,能够方便快速地开发出微信小程序、H5、App等多端应用。本指南将引导您从环境配置到实战案例开发,帮助您快速掌握使用Uni-app开发微信小程序的技巧。2.Uni-app概述2.1什么是Uni-app?Uni-app是一个使用Vue.js语法的跨平台开发框架,允许开发者用一套
前后端时间转换的那些常见问题及处理方法
繁依Fanyi
状态模式 python 算法 java 开发语言 android github
在现代的Web开发中,前后端分离的架构已经成为主流,尤其是在SpringBoot和Vue.js的组合中。开发者在这种架构下经常遇到的一个问题就是如何处理时间的转换和显示。前端和后端对时间的处理方式不同,可能会导致时间在传递过程中出现问题,比如时区不同步、格式不一致等。因此,本文将详细讨论在SpringBoot+Vue前后端分离架构中如何处理时间转换问题,并提供一些解决方案。一、前后端时间处理的常见
cross-plateform 跨平台应用程序-06-uni-app 介绍
知识分享官
uni-app
详细介绍一下uni-app?whatuni-app是一个使用Vue.js开发所有前端应用的框架,开发者编写一次代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/京东/美团/钉钉/淘宝)、快应用等多个平台。以下是uni-app的一些核心特性和优势:使用Vue.js开发:uni-app基于Vue.js,这意味着如果你已经熟悉Vue.js
机器学习 VS 表示学习 VS 深度学习
Efred.D
人工智能 机器学习 深度学习 人工智能
文章目录前言一、机器学习是什么?二、表示学习三、深度学习总结前言本文主要阐述机器学习,表示学习和深度学习的原理和区别.一、机器学习是什么?机器学习(machinelearning),是从有限的数据集中学习到一定的规律,再把学到的规律应用到一些相似的样本集中做预测.机器学习的历史可以追溯到20世纪40年代McCulloch提出的人工神经元网络,目前学界大致把机器学习分为传统机器学习和机器学习两个类别
Docker部署单点es
Javaismymorning
ES学习笔记 docker elasticsearch
前言该笔记是根据B站上黑马SpringCloud学习总结的一、ES是什么?Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值二、Docker部署ES步骤1.创建网络因为还要部署Kibana,实现es和Kibana关联,创建一个网络Kibana是为
数据结构 顺序表学习总结
sumandavg
数据结构 数据结构 1024程序员节
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。目录前言1.顺序表介绍1.1什么是顺序表1.2顺序表的性质1.3顺序表的构成1.4顺序表的框架代码(C++版)2.顺序表的操作2.1初始化顺序表2.1.1步骤2.1.2代码展示2.2顺序表的插入2.2.1步骤2.2.2代码展示2.3顺序表的
从学习vue到uni-app的心得感悟
crazy_章鱼哥
学习 uni-app 前端 javascript
前言你是否想过,只用一套代码,就能开发出适用于多个平台的前端应用?你是否想过,只用Vue.js这样一个简洁强大的框架,就能实现各种炫酷的功能和效果?你是否想过,只用uni-app这样一个神器,就能成为一个高手?如果你有这样的想法,那么就跟我一起来学习uni-app吧!uni-app是一个基于Vue.js的全端开发框架,它可以让你用一套代码,同时运行在H5、小程序、App等多个平台上。它具有跨平台、
面向对象面向过程
3213213333332132
java
面向对象:把要完成的一件事,通过对象间的协作实现。
面向过程:把要完成的一件事,通过循序依次调用各个模块实现。
我把大象装进冰箱这件事为例,用面向对象和面向过程实现,都是用java代码完成。
1、面向对象
package bigDemo.ObjectOriented;
/**
* 大象类
*
* @Description
* @author FuJian
Java Hotspot: Remove the Permanent Generation
bookjovi
HotSpot
openjdk上关于hotspot将移除永久带的描述非常详细,http://openjdk.java.net/jeps/122
JEP 122: Remove the Permanent Generation
Author Jon Masamitsu
Organization Oracle
Created 2010/8/15
Updated 2011/
正则表达式向前查找向后查找,环绕或零宽断言
dcj3sjt126com
正则表达式
向前查找和向后查找
1. 向前查找:根据要匹配的字符序列后面存在一个特定的字符序列(肯定式向前查找)或不存在一个特定的序列(否定式向前查找)来决定是否匹配。.NET将向前查找称之为零宽度向前查找断言。
对于向前查找,出现在指定项之后的字符序列不会被正则表达式引擎返回。
2. 向后查找:一个要匹配的字符序列前面有或者没有指定的
BaseDao
171815164
seda
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class BaseDao {
public Conn
Ant标签详解--Java命令
g21121
Java命令
这一篇主要介绍与java相关标签的使用 终于开始重头戏了,Java部分是我们关注的重点也是项目中用处最多的部分。
1
[简单]代码片段_电梯数字排列
53873039oycg
代码
今天看电梯数字排列是9 18 26这样呈倒N排列的,写了个类似的打印例子,如下:
import java.util.Arrays;
public class 电梯数字排列_S3_Test {
public static void main(S
Hessian原理
云端月影
hessian原理
Hessian 原理分析
一. 远程通讯协议的基本原理
网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http 、 tcp 、 udp 等等, http 、 tcp 、 udp 都是在基于 Socket 概念上为某类应用场景而扩展出的传输协
区分Activity的四种加载模式----以及Intent的setFlags
aijuans
android
在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。
这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。 加载模式分类及在哪里配置
Activity有四种加载模式:
standard
singleTop
hibernate几个核心API及其查询分析
antonyup_2006
html .net Hibernate xml 配置管理
(一) org.hibernate.cfg.Configuration类
读取配置文件并创建唯一的SessionFactory对象.(一般,程序初始化hibernate时创建.)
Configuration co
PL/SQL的流程控制
百合不是茶
oracle PL/SQL编程 循环控制
PL/SQL也是一门高级语言,所以流程控制是必须要有的,oracle数据库的pl/sql比sqlserver数据库要难,很多pl/sql中有的sqlserver里面没有
流程控制;
分支语句 if 条件 then 结果 else 结果 end if ;
条件语句 case when 条件 then 结果;
循环语句 loop
强大的Mockito测试框架
bijian1013
mockito 单元测试
一.自动生成Mock类 在需要Mock的属性上标记@Mock注解,然后@RunWith中配置Mockito的TestRunner或者在setUp()方法中显示调用MockitoAnnotations.initMocks(this);生成Mock类即可。二.自动注入Mock类到被测试类 &nbs
精通Oracle10编程SQL(11)开发子程序
bijian1013
oracle 数据库 plsql
/*
*开发子程序
*/
--子程序目是指被命名的PL/SQL块,这种块可以带有参数,可以在不同应用程序中多次调用
--PL/SQL有两种类型的子程序:过程和函数
--开发过程
--建立过程:不带任何参数
CREATE OR REPLACE PROCEDURE out_time
IS
BEGIN
DBMS_OUTPUT.put_line(systimestamp);
E
【EhCache一】EhCache版Hello World
bit1129
Hello world
本篇是EhCache系列的第一篇,总体介绍使用EhCache缓存进行CRUD的API的基本使用,更细节的内容包括EhCache源代码和设计、实现原理在接下来的文章中进行介绍
环境准备
1.新建Maven项目
2.添加EhCache的Maven依赖
<dependency>
<groupId>ne
学习EJB3基础知识笔记
白糖_
bean Hibernate jboss webservice ejb
最近项目进入系统测试阶段,全赖袁大虾领导有力,保持一周零bug记录,这也让自己腾出不少时间补充知识。花了两天时间把“传智播客EJB3.0”看完了,EJB基本的知识也有些了解,在这记录下EJB的部分知识,以供自己以后复习使用。
EJB是sun的服务器端组件模型,最大的用处是部署分布式应用程序。EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基
angular.bootstrap
boyitech
AngularJS AngularJS API angular中文api
angular.bootstrap
描述:
手动初始化angular。
这个函数会自动检测创建的module有没有被加载多次,如果有则会在浏览器的控制台打出警告日志,并且不会再次加载。这样可以避免在程序运行过程中许多奇怪的问题发生。
使用方法: angular .
java-谷歌面试题-给定一个固定长度的数组,将递增整数序列写入这个数组。当写到数组尾部时,返回数组开始重新写,并覆盖先前写过的数
bylijinnan
java
public class SearchInShiftedArray {
/**
* 题目:给定一个固定长度的数组,将递增整数序列写入这个数组。当写到数组尾部时,返回数组开始重新写,并覆盖先前写过的数。
* 请在这个特殊数组中找出给定的整数。
* 解答:
* 其实就是“旋转数组”。旋转数组的最小元素见http://bylijinnan.iteye.com/bl
天使还是魔鬼?都是我们制造
ducklsl
生活 教育 情感
----------------------------剧透请原谅,有兴趣的朋友可以自己看看电影,互相讨论哦!!!
从厦门回来的动车上,无意中瞟到了书中推荐的几部关于儿童的电影。当然,这几部电影可能会另大家失望,并不是类似小鬼当家的电影,而是关于“坏小孩”的电影!
自己挑了两部先看了看,但是发现看完之后,心里久久不能平
[机器智能与生物]研究生物智能的问题
comsci
生物
我想,人的神经网络和苍蝇的神经网络,并没有本质的区别...就是大规模拓扑系统和中小规模拓扑分析的区别....
但是,如果去研究活体人类的神经网络和脑系统,可能会受到一些法律和道德方面的限制,而且研究结果也不一定可靠,那么希望从事生物神经网络研究的朋友,不如把
获取Android Device的信息
dai_lm
android
String phoneInfo = "PRODUCT: " + android.os.Build.PRODUCT;
phoneInfo += ", CPU_ABI: " + android.os.Build.CPU_ABI;
phoneInfo += ", TAGS: " + android.os.Build.TAGS;
ph
最佳字符串匹配算法(Damerau-Levenshtein距离算法)的Java实现
datamachine
java 算法 字符串匹配
原文:http://www.javacodegeeks.com/2013/11/java-implementation-of-optimal-string-alignment.html------------------------------------------------------------------------------------------------------------
小学5年级英语单词背诵第一课
dcj3sjt126com
english word
long 长的
show 给...看,出示
mouth 口,嘴
write 写
use 用,使用
take 拿,带来
hand 手
clever 聪明的
often 经常
wash 洗
slow 慢的
house 房子
water 水
clean 清洁的
supper 晚餐
out 在外
face 脸,
macvim的使用实战
dcj3sjt126com
mac vim
macvim用的是mac里面的vim, 只不过是一个GUI的APP, 相当于一个壳
1. 下载macvim
https://code.google.com/p/macvim/
2. 了解macvim
:h vim的使用帮助信息
:h macvim
java二分法查找
蕃薯耀
java二分法查找 二分法 java二分法
java二分法查找
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年6月23日 11:40:03 星期二
http:/
Spring Cache注解+Memcached
hanqunfeng
spring memcached
Spring3.1 Cache注解
依赖jar包:
<!-- simple-spring-memcached -->
<dependency>
<groupId>com.google.code.simple-spring-memcached</groupId>
<artifactId>simple-s
apache commons io包快速入门
jackyrong
apache commons
原文参考
http://www.javacodegeeks.com/2014/10/apache-commons-io-tutorial.html
Apache Commons IO 包绝对是好东西,地址在http://commons.apache.org/proper/commons-io/,下面用例子分别介绍:
1) 工具类
2
如何学习编程
lampcy
java 编程 C++ c
首先,我想说一下学习思想.学编程其实跟网络游戏有着类似的效果.开始的时候,你会对那些代码,函数等产生很大的兴趣,尤其是刚接触编程的人,刚学习第一种语言的人.可是,当你一步步深入的时候,你会发现你没有了以前那种斗志.就好象你在玩韩国泡菜网游似的,玩到一定程度,每天就是练级练级,完全是一个想冲到高级别的意志力在支持着你.而学编程就更难了,学了两个月后,总是觉得你好象全都学会了,却又什么都做不了,又没有
架构师之spring-----spring3.0新特性的bean加载控制@DependsOn和@Lazy
nannan408
Spring3
1.前言。
如题。
2.描述。
@DependsOn用于强制初始化其他Bean。可以修饰Bean类或方法,使用该Annotation时可以指定一个字符串数组作为参数,每个数组元素对应于一个强制初始化的Bean。
@DependsOn({"steelAxe","abc"})
@Comp
Spring4+quartz2的配置和代码方式调度
Everyday都不同
代码 配置 spring4 quartz2.x 定时任务
前言:这些天简直被quartz虐哭。。因为quartz 2.x版本相比quartz1.x版本的API改动太多,所以,只好自己去查阅底层API……
quartz定时任务必须搞清楚几个概念:
JobDetail——处理类
Trigger——触发器,指定触发时间,必须要有JobDetail属性,即触发对象
Scheduler——调度器,组织处理类和触发器,配置方式一般只需指定触发
Hibernate入门
tntxia
Hibernate
前言
使用面向对象的语言和关系型的数据库,开发起来很繁琐,费时。由于现在流行的数据库都不面向对象。Hibernate 是一个Java的ORM(Object/Relational Mapping)解决方案。
Hibernte不仅关心把Java对象对应到数据库的表中,而且提供了请求和检索的方法。简化了手工进行JDBC操作的流程。
如
Math类
xiaoxing598
Math
一、Java中的数字(Math)类是final类,不可继承。
1、常数 PI:double圆周率 E:double自然对数
2、截取(注意方法的返回类型) double ceil(double d) 返回不小于d的最小整数 double floor(double d) 返回不大于d的整最大数 int round(float f) 返回四舍五入后的整数 long round