vue笔记

p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 12.0px Helvetica; color: #454545 }
p.p3 { margin: 0.0px 0.0px 2.0px 0.0px; text-align: justify; font: 14.0px "PingFang SC Semibold"; color: #454545 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 12.0px "PingFang SC"; color: #454545 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 12.0px Helvetica; color: #454545; min-height: 14.0px }
p.p6 { margin: 0.0px 0.0px 2.0px 0.0px; text-align: justify; font: 14.0px "PingFang SC"; color: #454545 }
p.p7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #454545 }
p.p8 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #454545; min-height: 14.0px }
p.p9 { margin: 0.0px 0.0px 2.0px 0.0px; text-align: justify; font: 14.0px Helvetica; color: #454545 }
li.li1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC Semibold"; color: #454545 }
span.s1 { font: 12.0px "PingFang SC" }
span.s2 { font: 12.0px Helvetica }
span.s3 { font: 12.0px Helvetica; text-decoration: underline; color: #e4af09 }
span.s4 { font: 14.0px "PingFang SC" }
span.s5 { font: 14.0px Helvetica }
span.Apple-tab-span { white-space: pre }
ol.ol1 { list-style-type: decimal }

一、部署

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #454545 }
span.s1 { font: 12.0px "PingFang SC" }

需要nodejs,全局安装 npm install -g vue-cli ,项目目录执行  vue init webpack firstVue,自己选取ide,推荐westorm/vscode/sublime text其中一个。本地运行执行npm run dev,这里注意本机环境需要有安装过nodejs环境,运行完后在默认浏览器打开一个localhost:8080。

二、更改启动页

更改默认启动页显示内容方式有两种。首先必须说明一下框架默认只有一个html文件,也就是根目录index.html。

1)在根目录下找到src/router-map.js文件,找到启动页配置/,如果要改动默认第一页显示的内容,更改/里面默认显示的vue文件名。

格式参考:

‘/‘: {

name: ‘index‘,

component(resolve){

require([‘./components/Index.vue‘], resolve)

}

},‘/home‘: {

name: ‘home‘,

component(resolve){

require([‘./components/Home.vue‘], resolve)

}

}

2) 在根目录下找到src/main.js文件,在router.start(App, ‘#app‘)这句后面可以加上一些js逻辑判断,跳转显示哪个为第一页。

参考格式:

router.go({

name: ‘home‘

})

三、新增页面

新增页面,也就是新增一个vue文件。在根目录下找到src/components新增一个xx.vue文件。根节点template下只能有一个子节点,不允许多个子节点。

参考格式:

<template>

<div>

<div>

</div>

<div>

</div>

</div>

</template>

<script>

export default{

data(){

return {

//这里设置当前页面的基础变量数据

msg: ‘hello vue‘

}

},

ready: function(){

//这里可以用data的默认数据更改、初始化、绑定事件

},

methods: {

//事件方法都写在这里

goTo: function(url){

this.$router.go({name: url});

}

},

components: {

//这里是组件,例如你引入Toast,需要在这里注入。

}

}

</script>

<style lang="less" scoped>

@import ‘../styles/home.less‘;

</style>

四、新增样式

新增样式有两种方式,一是直接在vue文件内部,二是引入外部文件。具有 scoped 属性的样式只会应用到当前元素和其子元素。另外需要注意lang,默认不写lang是平常普通的css。

内部方式:

<style lang="less" scoped>

.ok {

opacity: 1;

}

</style>

外部方式:

<style lang="less" scoped>

@import ‘../styles/home.less‘;

</style>

五、组件使用

引入组件,这个举例一个提示组件toast。有3个地方需要注意。

1)引入toast组件的js文件

参考格式:

<script>

import Scroller from ‘vux/src/components/toast‘;

</script>

2)引入toast组件的样式文件

参考格式:

<style scoped>

@import ‘../../node_modules/vux/dist/components/toast/style.css‘;

</style>

3)注入toast文件

参考格式

components: {

Toast

}

具体说明或其它组件请参照网站说明:https://vuxjs.gitbooks.io/vux/content/

六、第三方库文件

引入外部库文件,用npm管理依赖,例如想引入swiper或者jquery

在根目录下cmd终端下执行npm install swiper –save,安装在项目里面的node_modules 目录,package.json 也会更新,然后用import引入进来。

引入方式可参考引入组件方式。

七、路由问题

路由问题,例如我需要在跳转的时候把id带过去另外一个页面。首先要在router-map.js文件上标明跳转的时候我必须要带上id这个key。

参考格式:

‘/caseDetail/:id‘: {

name: ‘caseDetail‘,

component(resolve){

require([‘./components/CaseDetail.vue‘], resolve)

}

}

dom操作方式

<div v-link="{name: ‘caseList‘, params: { id: 123 }}"></div>

js操作方式

this.$router.go({ name: ‘caseDetail‘, params: { id: id } });

如果需要关注router变化做操作,需要在这里去做逻辑处理

参考格式:

route: {

data() {

// console.log("============:"+this.$route);

this.moduleId = this.$route.params.id;

this.getDetailInfo(this.moduleId);

}

}

八、接口问题

接口问题,首先需要在根目录下的src/services/services.js声明

参考格式:

import Vue from ‘vue‘

const HOLIKE_REMOTE = ‘http://qj.holike.com‘

export default {

Vue.resource(`${HTTP_REMOTE}/hlkapp/hlk/projectHouse/updateipad`)

}

然后在vue引入services

import services from ‘../services/services‘;

注意是get请求还是post请求

get请求,参考格式:

var requestBody = {};

requestBody.name = this.accountVal;

services.login.get(requestBody).then((res) => {

var data = res.body;

if (data.code == 200) {

console.log(JSON.stringify(returnData));

}

}, (error) => {

console.log("error:" + error);

});

post请求,参考格式:

var requestBody = {};

requestBody.name = this.accountVal;

services.login.save(requestBody).then((res) => {

var data = res.body;

if (data.code == 200) {

console.log(JSON.stringify(returnData));

}

}, (error) => {

console.log("error:" + error);

});

九、接口拦截器

增加接口拦截器,在根目录下找到src/main.js文件,可以在router.map(routerMap)后面加上interceptors。

参考格式:

Vue.http.interceptors.push((request, next) => {

//这里是接口请求前做的操作

Vue.http.headers.common[‘USER-TOKEN‘] = ‘fofofo‘

next((response) => {

//这里是接口请求后返回数据做的操作

console.log(‘response====‘, response.body)

if (response.body.code === -2) {

router.go({

name: ‘index‘

})

}

})

})

十、路径问题

路径问题,例如我在根目录static添加了一个images放图片文件。如果是在dom里面写可以是<img src="../../static/images/brand-baby-leftBg.png" />,如果是在js里写,需要写成./static/images/alpes-zone-zw2.jpg这种方式。这里注意如果有本地视频,在dom里也要写成是./static/video/baby_video2.mp4这种方式

十一、vuex使用

例如我有个toast想作为整个项目来使用,那就不需要在每个页面vue中分别引入toast组件。

1)根目录下的App.vue文件

参考格式

<template>

<div>

<toast :show="toastShown" type="text" width="20em" @on-hide="toastOnChange">{{toastText}}</toast>

</div>

</template>

<script>

import Toast from ‘vux/dist/components/toast/index.js‘;

import store from ‘./vuex/store‘

let commit = store.commit || store.dispatch

export default {

methods: {

toastOnChange() {

commit(‘UPDATE_TOAST‘, ‘‘, false)

}

},

components: {

Toast

},

store,

vuex: {

getters: {

toastShown: state => state.toastShown,

toastText: state => state.toastText,

route: state => state.route,

isLoading: state => state.isLoading,

direction: state => state.direction

}

}

}

2)根目录下的vuex/store.js

const state = {

isLoading: false,

toastText:‘‘

}

export default new Vuex.Store({

state,

mutations: {

UPDATE_TOAST (state, text, bool) {

state.toastText = text

state.toastShown = bool

}

}

})

3)在需要显示toast的地方传入显示文本和标志符,例如commit(‘UPDATE_TOAST‘, ‘请重新登录‘, true)

十二、cordova联调

为了全局可以使用cordova,必须先在index.html上引入cordova,例如<script src="cordova.js"></script>

参考格式:

cordova.plugins.NetworkUtil.isNetworkAvailable((flag) => {

console.log(‘NetworkUtil.isNetworkAvailable success:‘ + flag);

if (flag) {

} else {

}

}, (error) => {

console.log(‘NetworkUtil.isNetworkAvailable error:‘ + error);

});

时间: 2024-10-29 03:44:09

vue笔记的相关文章

vue 笔记二

vue制作weibo 交互 vue-> 1.0 vue-resource ajax php 服务器环境(node) this.$http.get()/post()/jsonp() this.$http({ url:地址 data:给后台提交数据, method:'get'/post/jsonp jsonp:'cb' //cbName });----------------------------------vue事件: @click=""数据: 添加一条留言: 获取某一页数据:

vue笔记二

七.列表渲染 1.示例 <ul id="example-2"> <li v-for="(item, index) in items"> {{ parentMessage }} - {{ index }} - {{ item.message }} </li> </ul> var example2 = new Vue({ el: '#example-2', data: { parentMessage: 'Parent',

vue笔记三

十.组件 1.组件中的data为函数 2.props: 父组件向子组件传递数据 子组件:Child.vue <template> <span>{{ myMsg }}</span> </template> <script> export default { props: ['myMsg'], data () { return { } } } </script> 父组件: <template> <div id="

Vue笔记五

十二.过滤器(filter) 示例代码: <template> <div id="app"> {{ msg | capitalize }} </div> </template> <script> export default { name: 'app', data () { return { msg: 'edited' } }, filters: { capitalize (value) { value = value.toS

vue笔记四

十一.过渡与动画 1.使用限制Vue 提供了 transition 的封装组件,在下列情形中,可以给任何元素和组件添加 entering/leaving 过渡条件渲染 (使用 v-if)条件展示 (使用 v-show)动态组件组件根节点 2.示例 <template> <div id="app"> <button @click="show = !show">单击我</button> <transition nam

vue 笔记一

vue: 读音: v-u-e view vue到底是什么? 一个mvvm框架(库).和angular类似 比较容易上手.小巧 mvc: mvp mvvm mv* mvx 官网:http://cn.vuejs.org/ 手册: http://cn.vuejs.org/api/ vue和angular区别? vue--简单.易学 指令以 v-xxx 一片html代码配合上json,在new出来vue实例 个人维护项目 适合: 移动端项目,小巧 vue的发展势头很猛,github上start数量已经超

vue笔记-路由,组件

git page: 任何仓库 master分支,都可以发布(git page) ------------------------------------- 双向过滤器: Vue.filter(name,{ read: write: }); ------------------------------------- 1.0 2.0 ------------------------------------- 引入 vue.js ------------------------------------

VUe 笔记

- MVVM```//vm -> VM ->var vm = new Vue({ el:'',data:{// 相当于Model -> Mmsg:''},methods:{this -> vmthis.msg}}) MVVM的作用是什么呢?传统的操作dom的做法是将逻辑与视图操作完全糅合在一起了,为了系统的可扩展性必须要想方设法的将他们二者放开,那么这个时候就出现了MVVM设计模式 在Vue中是如何去应用MVVM的呢?我们的Vue的对象实例负责管理逻辑操作和视图,当逻辑获取到数据以

Vue笔记(一)

指令: 1.v-if 指令用于标签的属性,绑定数据,当数据为true时,显示该标签,当属性为false时,移除该标签. 2.v-bind 指令用于属性响应绑定数据,数据改变此绑定的属性也改变,例如:<a v-bind:href="url">链接</a>,数据url改变,则a的href属性值也改变. 3.v-on 指令用于监听dom事件,如click.mouseover.mouseout等事件,例如:<button v-on:click="doSo