vue2.0基础知识,及webpack中vue的使用
## 基础指令 ##
[v-cloak]{
Display:none;
}
<p v-cloak>xx{{msg}}xx</p> //解决闪烁问题,xx显示
<p v-text='msg'>xxxx</p> //引入数据,默认没有闪烁问题,xxxx不显示
<p v-html='msg2'>xxxx</p> //引入html
<p v-for='(item,i) in user'>{{item}}</p> //v-for遍历数组
<p v-for='count in 10'>{{ count }}</p> //v-for遍历数字,执行10次
<p v-for='(val,key,i) in user' :key="item.id">{{item}}</p>
//v-for遍历数对象,i为索引,:key为唯一性关联
<input type="button" v-bind:title="mytitle"> //绑定属性的指令,v-bind:可简写为:
<input type="button" v-on:click="show"> //绑定事件方法,v-on: 可简写为@
<p v-if='flag'>xxxx</p> //dom添加删除元素
<p v-show='flag'>xxxx</p> //通过display隐藏元素
var vm= new Vue({
el:"#app",
data:{
msg:"123",
msg2:"<h2>title</h2>",
mytitle:"这是title",
user:[1,2,3,4]
},
methods:{ //绑定事件的方法
show:function(){****
this.msg="改变"
//在方法中改变数据,页面中数据会同步改变,用this引用数据源
}
},
watch:{ //监听data中数据的改变
'mytitle':function(newVal,oldVal){ //oldVal为老的值
Console.log(newVal) //新的值
}
},
computed:{ //设置数据的计算属性,相当于新增数据,有关数据变化,该值也变
'fullMsg':function(){
return this.msg+this.msg2
}
}
})
<p v-cloak>xx{{ fullMsg}}</p> //直接调用计算属性的数据
//{{msg}}双花括号数据显示,其实是省略了该vue对象的this指向,直接调用对象的方法,也可以直接调用类似$route.query等内置的属性和值{{$route.query }}
## 事件修饰符 ##
<input type="button" @click.stop="show"> //阻止事件冒泡
<a href="www.baidu.com" @click.prevent.once="show"></a> //阻止默认行为
## 表单元素中的双向数据绑定v-model ##
<input type="text" v-model="msg"> //input中输入数据,实时更新Vue中data
## 添加样式 ##
### 类名样式 ###
<h1 :class="['thin','italic',flag?'active':'']">xxx</h1>
<h1 :class="['thin','italic',{'active':flag}]">xxx</h1> //两种写法
<h1 :class="{red:true,thin:true}">xxx</h1> //可写对象,key为类名
//其中thin,italic,active都是有样式的类名,flag是Vue中data中设置的数据
### stlye样式 ###
<h1 :style="{color:'red','font-weight':200}">xxx</h1>
<h1 :style="[styleObj1,styleObj2]">xxx</h1>
## 安装Vue调试工具 ##
Vue-devtools chrome插件
## Vue过滤器filer ##
<p>{{ msg | msgFormat }}</p> //过滤显示数据
Vue.filter(‘msgFormat’,function(){ //全局过滤器
return msg.replace(‘a’,’b’);
})
var vm= new Vue({
el:”#app”,
filters:{ //写在实例化Vue对象中filters中的为私有过滤器
fileName:function(data){ //定义过滤器名称
}
}
})
## 按键修饰符 ##
<input type=”text” @keyup.enter=”show”> //enter为按键修饰符,监听回车
//如果不为上述按键可以使用键盘码:@keyup.112=”show”
Vue.config.keyCodes.f2=113; //自定义键盘修饰符
## 自定义指令v-focus ##
Vue.directive(‘focus’,{ //全局设置eyup.112=”show”
bind:function(el,binding){}, //当指令绑定到元素上时,执行,样式相关
inserted:function(el){}, //当元素插入DOM中后执行,js行为相关
updated:function(el){}, //当Vnode更新时执行,可能触发多次
})
var vm= new Vue({ //局部设置
el:”#app”,
directives:{ //自定义私有指令
‘fontWeight’:{
bind:function(el,binding){}
},
‘fontsize’:function(el,binding){
//直接写等同于写入bind和 update中
},
}
})
### 钩函数中,传递的参数意义 ###
## 生命周期 ##
## vue-resource插件发送ajax ##
### 引入插件 ###
Vue.http.options.root=”http://vue.study.rgo”;//全局设置resourse配置项
Vue.http.options.emulateJSON=true
new vue({ //局部配置
http:{
root:’/root’,
headers:{
Authorization:’xxxx’
}
}
})
var vm= new Vue({ //局部设置
el:”#app”,
methods:{ //自定义私有指令
postInfo(){
this.$http.post(url,{params},{options}).then(success,error)
}
}
})
## vue中的动画效果 ##
### 自定义类动画 ###
.name-enter,name-leave-to{ //时间点,动画进入之前/动画离开之后
opacity:0;
transform:translateY(100px);
}
.name-enter-active,name-leave-active{ //入场/离场动画时间段
opacity:0;
transform:translateY(100px);
}
<transition name=”name” mode=”out-in”> //mode设置动画切换模式
<h3 v-if=”flag”>这是动画</h3>
</transition>
### 引入第三方css动画,如animate.css ###
<transition enter-active-class=”bounceIn” leave-active-class=” bounceOut” :duration=”{enter:200}”>
<h3 v-if=”flag” class=”animated”>这是动画</h3>
//加入animated类名动画才生效,也可将类名加在transition标签上
</transition>
### 使用动画钩函数(只演示进场动画) ###
<transition @before-enter=”beforEnter” @ enter=”enter” @after-enter=”afterEnter”>
<h3 v-if=”flag”>这是动画</h3>
</transition>
var vm= new Vue({
el:”#app”,
methods:{
beforeEnter(el){
el.style.transform=”translate(0,0)”
},
enter(el,done){
el.offsetWidth //需要操作offset动画才生效
el.style.transform=”translate(150px,450px)”;
el.style.transition=”all 1s ease”;
done(); //done等同于调用了afterEnter,建议调用
},
afterEnter(el){
this.flag=!this.flag
}
}
})
### v-for创建的标签使用<transition-group>包裹才能实现动画 ###
<transition-group appear tag=”ul”>
//appear属性使整个标签实现渐入效果,tag属性指定transition-group为ul标签,默认为span
<li v-for=”item in list” :key=”item.id”> //如果要为每一个元素设置动画需要key属性
{{item.id}} --- {{item.name}}
</li>
</transition-group>
### 移除动画设置: ###
.v-move{
transition:all 0.6s ease;
}
.v-leave’-active{
position:absolute;
}
## vue中的组件(组件template属性必须用唯一根元素) ##
### 全局组件 ###
var com1=Vue.extend({
template:’<h3>这是组件名称</h3>’;
//使用template定义组件需要的html
})
Vue.component(‘myCom1’,com1) //驼峰命名,标签要变-连接
可合写为:
Vue.component(‘myCom1’, Vue.extend({
template:’<h3>这是组件名称</h3>’;
}))
<div id=”app”>
<my-com1></my-com1>
</div>
### 组件的其他写法 ###
一、
Vue.component(‘myCom1’, {
template:’<h3>这是组件名称</h3>’;
})
二、
<div id=”app”></div>
<template id=”tmp1”> //写在app外面
<h3>这是组件</h3>
</template>
Vue.component(‘myCom1’, {
template:’#tmp1’;
})
### 定义私有组 ###
var vm2= new Vue({
el:”#app2”,
components:{
tmp1:{
template:’<h3>私有组件tmp1</h3>’;
}
}
})
### 组件中的数据和方法 ###
Vue.component(‘myCom1’, {
template:’#tmp1’;
data:function(){ //data必须为返回一个对象的函数
return:{count:0}
},
methods:{
increment(){
this.count++
}
}
})
### 组件切换 ###
<div id=”app”>
<a @click.prevent=”comName=’login’”>登录</a>
<a @click.prevent=”comName=’register’”>注册</a>
<component :is=”comName”></component>
//vue中定义用于组件占位的标签
</div>
### 组件动画 ###
<transition mode=”out-in”> //mode设置动画切换模式
<component :is=”comName”></component>
</transition>
### 父子组件之间数据/方法传递 ###
<div id=”app”>
//在子组件绑定一个私有属性,通过这个属性传递数据
<comp1 v-bind:parentmsg=”msg” v-on:func=”show”></comp1>
</div>
var vm2= new Vue({
el:"#app",
data:{
msg:"123 父组件数据"
},
methods:{
show(data1,data2){
console.log(‘调用了父组件方法’)
}
},
components:{
comp1:{
template:’<h3 @click=”myclick”>私有组件{{ parentmsg }}</h3>’,
data(){ //子组件私有的数据,可读可写
return {title:”123”,content:”xxx”}
},
props:[‘parentmsg’], //在props中引入父组件传入的数据,只读
methods:{
myclick(){
this.$emit(‘func’,112,333) //调用父组件方法,112,333为传入参数
}
}
}
}
})
## 通过ref属性获取dom和子组件的数据/方法 ##
<h2 ref=”myh2”>这是h2标签</h2> //这是dom
<login ref=”mylogin”></login> //这是组件
var login={
template:’<h1>登录组件</h1>’,
data:function(){ //data必须为返回一个对象的函数
return:{msg:”这是登录信息”}
},
methods:{
show(){
console.log(‘show’)
}
}
}
var vm2= new Vue({
el:”#app”,
data:{
msg:”123 父组件数据”
},
methods:{
getElement(){
this.$refs.myh2 //获取dom
this.$refs.login.msg //获取子组件的data
this.$refs.show() //获取子组件的方法
}
},
components:{
login
}
})
## vue中的路由vue-router ##
1. 前端路由原理
hash的使用:
http://www.baidu.com#/login //网页url中#后面的部分称为hash,当页面hash发生改变时,页面不会向后端发送http请求,页面也不会跳转,但是页面本身会发生部分显示改变,例如使用锚点展示显示内容,这样可以使用hash来完成单页面的应用
2.vue-router的安装
在模块化工程(webpack)中必须使用Vue.use()明确安装路由功能
import Vue from ‘vue’
import VueRouter from ‘vue-router’
Vue.use(VueRouter) //给vue注册router功能
3.vue-router的基本使用方法
<div id=”app”>
//使用a标签点击跳转路由
<a href=”#/login?id=10&name=jim”>登录</a> //直接在url中传递参数
<a href=”#/register/10/jack”>注册</a> //url传递参数的第二种方式,传入设置规则的参数
//使用router-link标签点击跳转路由,特殊标签,默认渲染为a标签
<router-link to=”/login”>登录</router-link>
<router-link to=”/ register” tag=”span”>注册</router-link> //渲染为span
<router-view></ router-view > //特殊标签,相当于路由的占位符
//可使用动画标签设置路由动画切换
<transition name=”name” mode=”out-in”> //mode设置动画切换模式
<router-view></ router-view > //此处路由会动画切入
</transition>
</div>
//url第一种传参解析
var login={
template:’<h1>登录组件----{{$route.query.id}}---{{$route.query.name}}</h1>’,
data(){
return {msg:’123’}
},
created(){ //组件生命周期创建之初后,
Console.log(this.$route.query.id) //获取路由url中传递的参数
}
}
//url第二种传参解析
var register={
template:’<h1>注册组件----{{$route. params.id}}---{{$route. params.name}}</h1>’,
data(){
return {msg:’123’}
},
created(){ //组件生命周期创建之初后,
console.log(this.$route.params.id) //获取路由url中传递的参数
}
}
var routerObj=new VueRouter({ //创建路由对象
routes:[
{path:’/’,redirect: login }, //重定向
{path:’/login’,comppnent: login },
{path:’/register/:id/:name’,comppnent: register }, //设置路由参数
],
//被激活的类名为router-link-active,可设置当前选中路径标签的样式,也可如下操作
linkActiveClass:’myactive’ //设置选中高亮的标签的样式类名
})
var vm=new Vue({
el:”#app”,
data:{},
methods:{},
router: routerObj, //引入路由对象
watch:{ //通过$route.path监听路由的改变
‘$route.path’:function(newVal, oldVal){
console.log(oldVal)
}
}
})
4.设置子路由
<div id=”app”>
<router-link to=”/account”>Account</router-link>
<router-view></ router-view >
</div>
<template id=tmp1>
<div>
<h2>这是Account组件</h2>
<router-link to=”/account/login”>登录</router-link>
<router-link to=” /account/ register” tag=”span”>注册</router-link>
<router-view></ router-view >
</div>
</template>
var account={
template:’#tmp1’,
}
var login={
template:’<h1>登录组件</h1>’,
}
var register={
template:’<h1>注册组件</h1>’,
}
var routerObj=new VueRouter({ //创建路由对象
routes:[
{
path:’/account’,
component: account,
children:[ //设置子路由 {path:’login’,component:login}, //路径不要写斜线,不然认为到根路径
{path:’register’,component: register },
]
},
],
})
5.设置多个路由
<div id=”app”>
<router-view></ router-view >
<router-view name=”left”></ router-view >
<router-view name=”right”></ router-view >
</div>
var routerObj=new VueRouter({ //创建路由对象
routes:[
{
path:’/account’,
components: { //显示多个路由使用conponents复数,key为router-view中的name
‘default’:header, //第一个可以用默认组件name:default,不写name
‘left’:leftBox,
‘main’:mainBox
},
},
],
})
## json格式文件中不能写注释 ##
## vue中的render方法替换组件 ##
<div id="app">
<login></login>
</div>
var login={
template:"<h1>这是登录组件</h1>"
}
var vm=new Vue({
el:'#app'
data:{},
methods:{},
render:function(createElements){ //传递的参数是一个方法,能够将指定的模板组件渲染为html
return createElements(login) //这类的return结合会替换vue中el指定的那个容器,本案例中替换id="app"容器
}
})
## 在webpack中使用vue ##
import Vue from 'vue' //引入vue,其实默认引入的是vue.runtime版本在webpack中使用的,在网页中使用的话需要引入vue.js
引入规则:
1. 查找项目中的node_modules文件夹
2. 在node_modules文件夹下找到对应的vue文件夹
3. 在vue文件夹中,找到package.json包的配置文件
4. 在package.json中,查找main属性,里面写入了包的入口路径
修改路径:
//在webpack.config.js文件中添加规则即可
resolve:{
alias:{ //修改vue导入的路径
"vue$":"vue/dist/vue.js"
}
}
//也可直接引入
import Vue from '../node_modules/vue/dist/vue.js'
### 创建.vue文件使用webpack中默认的vue.runtime来构建组件 ###
1. 安装loader:vue-loader vue-template-compiler
2. webpack.config中配置loader:{test:/\.vue$/,use:'vue-loader'}
3. 创建包含template script style的xxxx.vue文件
<template>
<h1>这是登录组件</h1>
</template>
<script></script>
<style></style>
4. 在需要渲染组件的页面使用render引入组件
import xxxx from './xxxx.vue'
var vm=new Vue({
el:'#app'
data:{},
methods:{},
render:function(createElements){
return createElements(xxxx)
}
})
## 在webpack中使用vue-router ##
新建route.js文件并设置路由
import VueRouter from 'vue-router' //导入路由包
Vue.ues(VueRouter) //安装vueRouter
//导入组件
import account from './main/Acount.vue'
import goodsList from './main/GoodsList.vue'
import login from './main/login.vue'
import register from './main/register.vue'
var router = new VueRouter({ //创建路由对象
routes:[
{
path:'/account',
component:account,
children:[ //设置子组件
{path:'login',component:login},
{path:'register',component:register}
]
},
{path:'/GoodsList',component:goodsList,name:'goodsList'}
]
})
export default router //暴露路由对象
在main.js:
import Vue from 'vue'
import app from './App.vue'
import router from './route.js'
var vm=new Vue({
el:'#app',
render:c=>c(app),
router
})
在App.vue文件中:
<template>
<div>
<h1>这是App组件</h1>
<router-link to="/account">Account</router-link>
<router-link to="/account">Account</router-link>
<rounter-view></router-view>
</div>
</template>
在Account.vue中:
<template>
<div>
<h1>这是Account组件</h1>
<router-link to="/account/login">登录</router-link>
<router-link to="/account/register">注册</router-link>
<rounter-view></router-view>
</div>
</template>
<style lang="scss" scoped> //lang属性指定使用语言,此处使用scss,scoped属性表明样式只对当前组件生效,原理是自动加上一个属性选择器
body{
div{
color:"red"
}
}
</style>
在GoodsList.vue中:
<template>
<div>
<h1>这是GoodsList组件</h1>
</div>
</template>
在index.html中:
<body>
<div id="app"></div>
</body>
如果使用编程式导航(window.location.href)跳转则可通过控制$router.push
this.$router.push("/home/goodsList"+id)
//或者
this.$router.push({path:"/home/goodsList"+id}})
//或者使用路由的name
this.$router.push({name:"goodsList",params:{id}})
## 在父组件中引用子组件 ##
<template>
<comment-box :id="this.id"></comment-box> //父组件向子组件传值
</template>
<script>
//引入子组件页面
import comment from "../subcomponent/comment.vue";
export default{
components:{
"comment-box":comment //设置子组件标签名
}
}
</script>
//在comment.vue中接收父组件传递过来的值
props:['id','max']
//也可写成可以设置值类型的形式
props:{
id:Number,
// 多种类型
propB:[String, Number],
// 必传且是字符串
propC:{
type:String,
required:true
},
// 数字,有默认值
propD:{
type: Number,
default: 100
},
}
//可以通过watch监听props中值的变化
watch:{
max:function(newVal,oldVal){ //监听父组件max的值
}
}
## vuex的使用 ##
vuex是Vue配套的组件公共数据管理工具,可以将组件的一些共享数据保存到vuex中,方便整个程序中的任意组件直接获取或修改公共组件
import Vuex from 'vuex'
Vue.use(Vuex)
//创造一个公共
var store=new Vuex.Store({
state:{ //公共数据集,类似vue中的data
count:0
},
mutations:{ //对公共数据的操作方法,;类似vue中的methods
increment(state,params){ //方法中只能传递两个参数,第一个为公共数据集,第二个为向该方法传递的参数
state.count++;
},
subtract(state,params){
state.count-=(params.a+params.b);
}
},
getters:{ //可以对数据进行获取并包装再返回
optCount:function(state){
return '当前最新的count值是:'+state.count
}
}
})
//挂载公共数据集的数据
const vm = new Vue({
el:'#app',
render:c=>c(App),
store
})
//获取store数据集中的数据
<input type="text" v-model="$store.state.count">
//获取getters中的数据
<h3>{{$store.getters.optCount}}</h3>
//调用公共集中的方法并操作公共集中的数据
methods:{
remove(){
this.$store.commit('substract',{a:2,b:4})
}
}
## es6 export语法使用 ##
在test.js文件定义:
var info={
name:"tabb",
age:18
}
export default info //export default只能出现一次
//暴露多个对象
export var title="这是title"
export var content="这是content"
在另一个test2.js文件中接收test.js中的信息
import test123,{title,content as content123} from './test.js'
{title,content} //这种方式称为按需导出
console.log(tset123) //为export default中的内容
console.log(title) //为额外暴露的内容
console.log(content123) //可以使用as给content起别名
## 使用es6 Promise 处理回调嵌套(回调地狱)##
1. Promise是一个构造函数
2. Promise上有两个回调函数:resolve(成功之后的回调函数),reject(失败之后的回调函数)
3. 在Promise构造函数的Prototype属性上,有一个then()方法
4. Promise表示一个异步操作,每当new 一个Promise时,就表示一个具体的异步操作
5. 由于Promise创建的实例是一个异步操作,这个异步操作的结果只有两种状态:成功(resolve);失败(reject)
6. 可以在new出来的Promise实例上,调用then()方法,为这个Promise异步操作,指定成功(resolve)和失败(reject)回调函数
### 以读取文件为例的Promise异步操作示例 ###
const fs = require('fs') //引入文件处理模块
//封装一个读取文件的promise函数
function getFileByPath(fpath){
//此处resolve和reject为成功、失败的形参函数,直接返回promise对象
return new Promise(function(resolve,reject){
fs.readFile(fpath,'utf-8',(err,dataStr)=>{
if(err) return reject(err)
resolve(dataStr)
})
})
}
//promise中then的使用,传入两个函数,第一个监听resolve执行,第二个监听reject执行
getFileByPath('./files/1.text').then(function(data){
console.log(data)
},function(err){
console.log(err)
})
//使用promise的then解决回调地狱,同时使用catch捕获reject的执行
//只执行成功回调的异步操作,如果某次执行失败进入reject,操作终止
getFileByPath('./files/1.text')
.then(function(data){
console.log(data)
return getFileByPath('./files/2.txt') //将新生成的promise对象返回,可以直接在调用新对象的then
})
.then(function(data){
console.log(data)
return getFileByPath('./files/3.txt')
})
.catch(function(err){ //捕获上述方法中的任意执行失败事件
console.log(err)
})
## 如果出现引用第三方callee等报错,修改babel的配置可去除webpack的严格模式 ##
babel-plugin-transform-remove-strict-mode
vue2.0基础知识,及webpack中vue的使用的更多相关文章
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十五 ║Vue基础:JS面向对象&字面量& this字
缘起 书接上文<从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 & 我的前后端开发简史>,昨天咱们说到了以我的经历说明的web开发经历的 ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十六 ║Vue基础:ES6初体验 & 模块化编程
缘起 昨天说到了<从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十五 ║ Vue前篇:JS对象&字面量&this>,通过总体来看,好像大家对这一块不是很 ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十三║Vue实战:Vuex 其实很简单
前言 哈喽大家周五好,马上又是一个周末了,下周就是中秋了,下下周就是国庆啦,这里先祝福大家一个比一个假日嗨皮啦~~转眼我们的专题已经写了第 23 篇了,好几次都坚持不下去想要中断,不过每当看到群里的交 ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十八║Vue基础: 指令(下)+计算属性+watch
回顾 今天来晚辣,给公司做了一个小项目,一个瀑布流+动态视频控制的DEMO,有需要的可以联系我,公司的项目就不对外展示了(一个后端程序员真的要干前端了哈哈哈). 书接上文,昨天正式的开始了Vue的代码 ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十║Vue基础终篇:传值+组件+项目说明
缘起 新的一天又开始啦,大家也应该看到我的标题了,是滴,Vue基础基本就到这里了,咱们回头看看这一路,如果你都看了,并且都会写了,那么现在你就可以自己写一个Demo了,如果再了解一点路由,ajax请求 ...
- 前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍
webpack的一点介绍 Webpack 把任何一个文件都看成一个模块,模块间可以互相依赖(require or import),webpack 的功能是把相互依赖的文件打包在一起.webpack 本 ...
- 0基础菜鸟学前端之Vue.js
简介:0基础前端菜鸟,啃了将近半月前端VUE框架,对前端知识有了初步的了解.下面总结一下这段时间的学习心得. 文章结构 前端基础 Vue.js简介 Vue.js常用指令 Vue.js组件 Vue.js ...
- Vue2.0 基础入门
前言:" 今生遇汝,何其幸哉:于我蒙昧之时遇到你,于我大雾初透之时爱上你,于我大智初醒之时沉沦你. " 官网: 介绍 - Vue.js (vuejs.org) 指令与修饰符 创建实 ...
- 基础知识系列☞C#中→属性和字段的区别
"好吧...准备写个'基础知识系列',算是记录下吧,时时看看,更加加深记忆···" 其实本来准备叫"面试系列"... 字段.属性.你先知道的哪个概念? ***我 ...
随机推荐
- ORB-SLAM(五)KeyFrame类
KeyFrame类利用Frame类来构造.对于什么样的Frame可以认为是关键帧以及何时需要加入关键帧,是实现在tracking模块中的. 由于KeyFrame中一部分数据会被多个线程访问修改,因此需 ...
- 破解PHPStrom 10 and Pycharm
注册时选择 License server http://idea.lanyus.com/ 然后点击OK Pycharm -- License server http://idea.lanyus.com ...
- 项目总结(二)->一些常用的工具浅谈
程序员是否应该沉迷于一个编程的世界,为了磨砺自己的编程技能而两耳不闻窗外事,一心只为写代码:还是说要做到各有涉猎,全而不精.关于这点每个人心中都有一套自己的工作体系和方法体系. 我一直认为,程序员你首 ...
- 【功能笔记】Ubuntu查看系统资源占用(内存,cpu和进程) {转载}
转载自http://bluexp29.blog.163.com/blog/static/33858148201071534450856/ linux真是太强大了. 查看ubuntu的资源占用的命令为$ ...
- 6.1 python+appium元素定位方式(登录app)
1.0.0 :常见的十种元素定位方式 .driver.find_element_by_id() #id定位 .driver.find_element_by_name() #name定位(已经凉 ...
- Struts2(二.用户登录模块)
1.编写Javabean /src/myuser/User.java 在strut1中,Javabean需要继承于struts1 api中的ActionForm类.struts2没有此要求 strut ...
- 12-Mysql数据库----多表查询
本节重点: 多表连接查询 符合条件连接查询 子查询 准备工作:准备两张表,部门表(department).员工表(employee) create table department( id int, ...
- kickstart技术安装操作系统
kickstart是RedHat公司开源的软件,所以对CentOS兼容性最好. 原理:我们将手动安装的所有的详细步骤记录到一个文件中,然后kickstart通过读取这个文件就可以实现自动化安装系统. ...
- 详解python 局部变量与全局变量
本文将详细分析python的全局变量与局部变量,学过php的人都知道,php里面的全局变量是无法在function里面去使用的,只有超全局变量才可以,那么python会怎么处理全局变量与局部变量呢?下 ...
- 从零开始配置Jenkins(三)——用户权限管理
背景 最近项目管理中需要对jenkins的权限进行区分和限定,就研究了一下下.顺道把用户和权限这块的内容分享给大家. 用户 要想创建用户,需要先设定允许用户注册. 在系统设置,Configure Gl ...