vue学习之环境部署及简单使用

vue初学者之路

先安装node.js

vue 1.x或者2.x安装及创建项目

  1. npm install --global vue-cli 或者 npm install --global vue-cli
  2. vue init webpack 项目名
  3. cd 项目名
  4. 如果创建失败,就运行 cnpm install / npm install
  5. 运行项目:npm run dev

如果已经安装了vue的1.x或者2.x,想安装3.x,先卸载,npm uninstall vue-cli -g

vue3.x安装

  1. npm install -g @vue/cli
  2. 命令行创建
    1. 进入相应的文件夹创建项目:vue create demo(demo是项目名)
    2. 运行:npm run serve
    3. 编译:npm run build
  3. 图形化创建项目:命令行进入文件夹后:vue ui

创建项目记得引入scss

vue主要是以组件方式来构建页面

引入其他页面
这是引入components下的HelloWorld.vue

<HelloWorld></HelloWorld>
<script>
import HelloWorld from Body.vue
export default {
        components: {
             HelloWorld
        }
    }
</script>

#提醒:所有的节点要被根节点包含

v-bind:src为绑定属性

数据绑定,当输入框改变,上面的name也改变

{{name}}
 <input type="text" v-model="name">
 
 data() {
   return {
        name: "cc",
   }
},

todoList判断显示,点击checkbox直接取反

        <input type="text" v-model="message"><button @click="addMes()">添加游戏</button>
        <br>
        <h2>login.....</h2>
        <ul>
            <li v-for="list in lists" v-if="!list.checked">
                <input type="checkbox" v-model="list.checked">
                {{list.title}}
            </li>
        </ul>
        <br>
        <h2>end.....</h2>
        <ul>
            <li v-for="list in lists" v-if="list.checked">
                <input type="checkbox" v-model="list.checked">
                {{list.title}}
            </li>
        </ul>
        
       data() {
           return {
                   message:'',
                       lists:[{checked:false,title:"王者荣耀"},
                           {checked:false,title:"绝地求生"}]
                   }
               },
       methods:{
           addMes(){
                this.lists.push({
                    checked:false,title:this.message
                });
                this.message = '';
       },

也可以通过回车键添加

        <input type="text" v-model="message" @keydown="addMes($event)">
        <br>
        <h2>login.....</h2>
        <ul>
            <li v-for="list in lists" v-if="!list.checked">
                <input type="checkbox" v-model="list.checked">
                {{list.title}}
            </li>
        </ul>
        <br>
        <h2>end.....</h2>
        <ul>
            <li v-for="list in lists" v-if="list.checked">
                <input type="checkbox" v-model="list.checked">
                {{list.title}}
            </li>
        </ul>
        
        addMes(e) {
                        if (e.keyCode == 13) {
                            this.lists.push({
                                checked: false, title: this.message
                            });
                            this.message = '';
        
                        }
        
                    },

封装js—封装本地缓存storage.js

// 封装操作localstorage本地存储的方法  ,模块化的文件,var里面的命名没有影响
var storage={

    set(key,value){
      localStorage.setItem(key,JSON.stringify(value))
    },
    get(key){
        return JSON.parse(localStorage.getItem(key));
    },
};

export default storage; //export default把storage暴露出去

获取封装的js

import storage from './model/storage' //引入,取别名

storage.set("list",this.lists) //方法使用

在style后面加上scoped表示局部作用域

父子组件传值

父组件给子组件传值

父组件调用子组件的时候绑定动态属性 如:
子组件通过props接收 如:props:[‘title’]或者props:{‘title’}

父组件主动获取子组件的数据和方法

父组件挂载子组件为,如果需要获取子组件的数据和方法,即:this.$refs.header.data/methods

子组件主动获取父组件的数据和方法

this. p a r e n t . 数 据 t h i s . parent.数据 this. parent.this.parent.方法

非父子组件传值(不常用)

1.新建一个VueEvent.js文件 引入vue 实例化vue 然后暴露这个实例,如:

import Vue from 'vue'
var vue = new Vue()
export default vue;

2.在要广播的地方引入刚才创建的js实例

import VueEvent from '../VueEvent.js'

3.在methods中通过VueEvent. e m i t ( ′ k e y ′ , 数 据 ) 来 广 播 数 据 4. 在 接 收 数 据 的 地 方 也 要 引 入 创 建 的 j s 实 例 , 在 m o u n t e d 里 通 过 V u e E v e n t . emit(&#x27;key&#x27;,数据)来广播数据 4.在接收数据的地方也要引入创建的js实例,在mounted里通过VueEvent. emit(key,)广4.jsmountedVueEvent.on(‘key’,function(){})

vue-resource的使用 (建议)(用于链接后台获取数据)

1.在项目下安装 cnpm install vue-resource --save
2.在main.js上引用

import vueResource from 'vue-resource';
Vue.use(vueResource);

3.用法

this.$http.get(url).then(function (response) {
           console.log(response);
       },function (err) {
           console.log(err);
       })

axios的使用(个人不建议) (用于链接后台获取数据)

1.在项目目录下安装cnpm install axios --save
2.哪里需要就在哪里引用axios:

import Axios from 'axios' //引入
axios.get(url).then((response)=>{

}).catch((err)=>{
})

跨域访问后台数据问题解决,在后台的函数上加上

        response.addHeader("Access-Control-Allow-Origin", "*");

vue-router使用

  1. 在项目目录下安装cnpm install vue-router --save
  2. 在main.js引入import VueRouter from ‘vue-router’ 并Vue.use(VueRouter)
  3. 配置路由
    1. 创建组件 引入组件
    2. 定义路由(建议复制)
          const routes = {
              {path:'/',component:}
          }
      
    3. 实例化VueRouter
         const router = new VueRouter({
             routes
         })
      
    4. 挂载路由
      new Vue({
        router,
        render: h => h(App),
      })
      
    5. 把放在根组件的App.vue里面
      整个流程为main.js
    import Vue from 'vue'
    import App from './App.vue'
    import vueResource from 'vue-resource';//用来访问后台数据
    import VueRouter from 'vue-router'
    
    Vue.use(VueRouter);
    
    // 创建组件
    import Header from './components/Header'
    import Body from './components/Body'
    // 配置路由
    const routes = [
        { path:'/header',component:Header},
        { path:'/body',component:Body},
        { path:'*',redirect:'/header'},//当没有任何路由时,默认执行
    ];
    
    // 实例化vueRouter
    const router = new VueRouter({
      routes
    });
    
    Vue.use(vueResource);
    Vue.config.productionTip = false
    
    new Vue({
      el:'#app',
      router,
      render: h => h(App),
    });
    
    

动态路由

  1. 除开routes里面的写法不一样,上面其他都一样,routes里面的组件路径写法为:{ path:’/content/:pid’,component:Content},
  2. 需要点击跳转的按钮写法:{{index}}------{{list.title}}
  3. 或者传过来参数为:
       mounted() {
            this.pid=this.pid=this.$route.query.pid;//this.$route.params.pid;为获取参数
            this.getQuestionnaire(this.pid);
        }
       ```
    

通过js来跳转路由

配置路由

{ path:'/showMessage',component:ShowMessage,name:'show'}//通过name来跳转到相应的vue

跳转方法
不需要传参数

this.$router.push('show');

需要传参数

<button @click="toContent()">通过js跳转到content</button>
toContent(){
               this.$router.push({name:'show'});
},

路由的嵌套

main.js

import Vue from 'vue'
import App from './App.vue'
import vueResource from 'vue-resource';
import VueRouter from 'vue-router'

Vue.use(VueRouter);

// 创建组件
import Header from './components/Header'
import Body from './components/Body'
import Content from './components/Content'
import ShowMessage from './components/ShowMessage'
import User from './components/User'
import UserList from './components/User/UserList'
import AddUser from './components/User/AddUser'
import EditUser from './components/User/EditUser'
import DeleteUser from './components/User/DeleteUser'

// 配置路由
const routes = [
    {path: '/header', component: Header},
    {path: '/body', component: Body},
    {
        path: '/user',
        component: User,
        children:[
            {path:'userList',component:UserList},
            {path:'addUser',component:AddUser},
            {path:'editUser',component:EditUser},
            {path:'deleteUser',component:DeleteUser}
        ]
    },
    {path: '/content/:pid', component: Content},
    {path: '/showMessage', component: ShowMessage},//get方法传值
    {path: '/showMessage', component: ShowMessage, name: 'show'},//通过name方法跳转路由
    {path: '*', redirect: '/header'},//当没有任何链接时,默认执行
];

// 实例化vueRouter
const router = new VueRouter({
    // mode:'history',//把hash模式改为history模式
    routes
});

Vue.use(vueResource);
Vue.config.productionTip = false

new Vue({
    el: '#app',
    router,
    render: h => h(App),
});

页面跳转,App.vue

<template>
    <div id="app">
        <!--<button @click="flag = !flag">卸载或者挂载头部组件</button>-->
        <router-link to="/body">Body</router-link>
        <router-link to="/header">header</router-link>
        <router-link to="/user/userList">用户中心</router-link> <!--点击时跳出用户中心,但显示内容的区域为用户列表 -->
        <!--<button @click="toContent()">通过js跳转到content</button>-->
        <router-view></router-view>
    </div>
</template>

user.vue,需要在点击链接,子路由显示的区域加入

<template>
    <div id="user">
        <div class="user">
            <div class="left">
                <ul>
                    <li><router-link to="/user/userList">用户列表</router-link></li>
                    <li><router-link to="/user/addUser">增加用户</router-link></li>
                    <li><router-link to="/user/editUser">修改用户</router-link></li>
                    <li><router-link to="/user/deleteUser">删除用户</router-link></li>
                </ul>
            </div>
            <div class="right">
                <router-view></router-view>
            </div>
        </div>

    </div>
</template>

#基于vue的ui

element-ui

安装element-ui

在相应的目录下输入命令行:cnpm install element-ui -S
在main.js中引入mint-ui和相应的css代码如下

import ElementUi from 'element-ui';
import 'element-ui/theme-chalk/index.css'
Vue.use(ElementUi);

用法:https://element.eleme.cn/#/zh-CN/component/quickstart

配置file_loader

如果package.json里的devDependencies没有file-loader就运行命令:cnpm install file-loader --save-dev

mint-ui(基于移动端)

安装mint-ui

在相应的目录下输入命令行:cnpm install mint-ui -S
在main.js中引入mint-ui和相应的css代码如下

import MintUi from 'mint-ui';
import 'mint-ui/lib/style.css'
Vue.use(MintUi);

具体用法:http://mint-ui.github.io/docs/#/zh-cn2

vuex(能不用就不用,一般用在大型项目)

目的:解决不同组件数据共享,数据持久化

vuex的使用

  1. 安装vuex:cnpm install vuex --save
  2. src新建一个veux的文件夹
  3. vuex新建一个store.js
  4. 在store.js引入vue、vuex,并且use(vuex)
    import Vue from 'vue'
    import Vuex from 'vuex'
    Vue.use(Vuex);
    
    // state在vuex用于存储数据
    var state={
       count:1,
       lists:[]
    };
    
    // mutation里面放的是方法;主要用于改变state里面的数据
    var mutations={
       inCount(){
           ++state.count;
       },
       addList(state,data){  //如果该方法有传值,第一个参数为state,第二个参数为数据
           state.lists = data;
       }
    };
    // 改变state里面的count数据的时候会触发getters里面的方法 获取新值(基本不用)
    var getters={
       computedCount:(state)=>{
           return state.count*2;
       }
    }
    
    // 基本没用
    var actions={
       inMutationsCount(context){  //执行mutation里面的方法,改变state里面的数据
           context.commit('inCount')
       }
    }
    
    // 实例化Vuex.Store
    const store = new Vuex.Store({
       state,
       mutations,
       actions,
       getters
    });
    
    export default store    //暴露
    
    
    

组件使用vuex

在要用到数据共享的地方进行引用和注册
```vue
{{this.$store.state.count}} //使用state里面的数据

import store from '../../vuex/store.js'

    export default {
        name: "addUser",
        store,//注册
        methods:{
            changeCount(){
                // this.$store.commit('inCount');  //commit触发mutation
                this.$store.dispatch('inMutationsCount'); //dispatch触发action里面的方法
            }
        }
    }
```

小型项目缓存用下面两种

  1. localstrage
  2. sessionstrage
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值