VUE-CLI4.X安装和初始化VUE项目并集成ELMENTUI

VUE-CLI4.X安装和初始化VUE项目并集成ELMENTUI
node环境安装
  • 下载并安装node.js

    node.js

  • 将node.exe文件所在路径加入到环境变量PATH中

    C:\Program Files\nodejs\

  • 检查node命令

    node -v
    npm -v
    

    C:\Users\haorongzhi>node -v
    v12.18.4

    C:\Users\haorongzhi>npm -v
    6.14.6

  • 安装成功后,修改npm镜像( )

    npm install -g cnpm --registry=https://registry.npm.taobao.org
    
  • 查看npm版本

    cnpm  -v
    

    C:\WINDOWS\system32>cnpm -v
    cnpm@6.1.1 (C:\Users\haorongzhi\AppData\Roaming\npm\node_modules\cnpm\lib\parse_argv.js)
    npm@6.14.8 (C:\Users\haorongzhi\AppData\Roaming\npm\node_modules\cnpm\node_modules\npm\lib\npm.js)
    node@12.18.4 (C:\Program Files\nodejs\node.exe)
    npminstall@3.27.0 (C:\Users\haorongzhi\AppData\Roaming\npm\node_modules\cnpm\node_modules\npminstall\lib\index.js)
    prefix=C:\Users\haorongzhi\AppData\Roaming\npm
    win32 x64 10.0.17134
    registry=https://r.npm.taobao.org

VUE安装
  • 全局安装vue

    cnpm install vue -g
    

    C:\WINDOWS\system32>cnpm install vue -g
    Downloading vue to C:\Users\haorongzhi\AppData\Roaming\npm\node_modules\vue_tmp
    Copying C:\Users\haorongzhi\AppData\Roaming\npm\node_modules\vue_tmp_vue@2.6.12@vue to C:\Users\haorongzhi\AppData\Roaming\npm\node_modules\vue
    Installing vue’s dependencies to C:\Users\haorongzhi\AppData\Roaming\npm\node_modules\vue/node_modules
    All packages installed (used 6ms(network 3ms), speed 0B/s, json 0(0B), tarball 0B

VUE-CLI 脚手架安装
  • 全局安装vue-cli

    cnpm install -g @vue/cli
    

    如果有1.X或2.X的vue-cli,请先执行卸载操作npm uninstall vue-cli -g

  • 查看vue版本

    vue --version
    或
    vue -V
    

    C:\WINDOWS\system32>vue -V
    @vue/cli 4.5.6

  • 升级vue-cli

    npm update -g @vue/cli
    
创建VUE项目
  • 创建新项目

    vue create mypoject
    

    Vue CLI v4.5.6
    ? Please pick a preset: (Use arrow keys)

    Default ([Vue 2] babel, eslint)
    Default (Vue 3 Preview) ([Vue 3] babel, eslint)
    Manually select features

    可选择安装babel和eslint

  • 安装成功后,进入cd mypoject启动webpack服务,查看页面效果

    npm run serve
    

    DONE Compiled successfully in 5285ms 11:34:40 ├F10: AM┤

    App running at:

    • Local: http://localhost:8080/
    • Network: http://10.72.87.174:8080/

    Note that the development build is not optimized.
    To create a production build, run npm run build.

登录8080端口,展示效果如下,证明VUE项目启动成功

在这里插入图片描述

VUE引入ElementUI
  • elementui安装

    进入项目目录,运行如下命令

    cnpm i element-ui -S
    

    安装过程提示core-js版本小于3

    deprecate element-ui@2.13.2 › async-validator@1.8.5 › babel-runtime@6.26.0 › core-js@^2.4.0 core-js@❤️ is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.

    升级core-js

    cnpm install --save core-js@^3
    

    重新安装eleemngtui,提示如下表示安装成功

    D:\temp\xiaorenshu-ui>cnpm i element-ui -S
    √ Installed 1 packages
    √ Linked 0 latest versions
    √ Run 0 scripts
    √ All packages installed (used 261ms(network 258ms), speed 78.31kB/s, json 1(20.2kB), tarball 0B)

    查看项目目录下node_modules,出现elementui目录

在这里插入图片描述

  • 将elementui引入到项目中

    在main.js中引入如下内容:

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

    完整代码:

    import Vue from 'vue'
    import App from './App.vue'
    import ElementUI from 'element-ui';
    import 'element-ui/lib/theme-chalk/index.css';
    
    Vue.use(ElementUI);
    
    Vue.config.productionTip = false
    
    new Vue({
      render: h => h(App),
    }).$mount('#app')
    
集成axios
  • axios使用参考 axios中文文档

  • npm安装axios

    进入项目目录,执行如下命令

    cnpm install axios
    

    D:\temp\xiaorenshu-ui>cnpm install axios
    √ Installed 1 packages
    √ Linked 1 latest versions
    √ Run 0 scripts
    √ All packages installed (2 packages installed from npm registry, used 1s(network 1s), speed 104.39kB/s, json 2(8.79kB), tarball 100.61kB)

集成Vue Router
  • Vue Router使用参考API 参考

  • 安装vue router

    cnpm install vue-router
    

    D:\temp\xiaorenshu-ui>cnpm install vue-router
    √ Installed 1 packages
    √ Linked 0 latest versions
    √ Run 0 scripts
    Recently updated (since 2020-10-02): 1 packages (detail see file D:\temp\xiaorenshu-ui\node_modules.recently_updates.txt)
    √ All packages installed (1 packages installed from npm registry, used 928ms(network 909ms), speed 153.09kB/s, json 1(14.41kB), tarball 124.75kB)

  • 引入router,main.js完整代码如下

import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import App from './App.vue'
import VueRouter from 'vue-router'
// import login from './views/login.vue';

Vue.use(ElementUI);

Vue.config.productionTip = false

// 0. 如果使用模块化机制编程,导入Vue和VueRouter
 Vue.use(VueRouter);
// 1. 定义 (路由) 组件。
// 可以从其他文件 import 进来
const Foo = { template: '<div>foo</div>' }
const Bar = { template: '<div>bar</div>' }

// 2. 定义路由
// 每个路由应该映射一个组件。 其中"component" 可以是
// 通过 Vue.extend() 创建的组件构造器,
// 或者,只是一个组件配置对象。
// 我们晚点再讨论嵌套路由。
const routes = [
  { path: '/foo', component: Foo },
  { path: '/bar', component: Bar }
]

// 3. 创建 router 实例,然后传 `routes` 配置
// 你还可以传别的配置参数, 不过先这么简单着吧。
const router = new VueRouter({
  routes // (缩写) 相当于 routes: routes
})

// 4. 创建和挂载根实例。
// 记得要通过 router 配置参数注入路由,
// 从而让整个应用都有路由功能
new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
  • app.vue代码如下

    <template>
      <div id="app">
        <p>
          <!-- 使用 router-link 组件来导航. -->
          <!-- 通过传入 `to` 属性指定链接. -->
          <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
          <router-link to="/foo">Go to Foo</router-link>
          <router-link to="/bar">Go to Bar</router-link>
        </p>
        <!-- 路由出口 -->
        <!-- 路由匹配到的组件将渲染在这里 -->
        <router-view></router-view>
      </div>
    </template>
    
  • 遇到问题,当我们点击路由跳转时报错

    You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build

    你正在使用’仅有运行时环境’的Vue构建版本,该版本中template编译器不可用。要么预编译模板,使其变为render函数,或者使用’包含编译器’的Vue构建版本。

解决方法 (二者取其一即可):

  1. 引入可编译的vue版本

    修改main.js将import Vue from 'vue' 修改为 import Vue from 'vue/dist/vue.js'

  2. 项目根目录下新建vue.config.js,加入如下选项

    // vue.config.js
    module.exports = {
      // 选项...
        runtimeCompiler: true
    }
    
集成Vuex进行状态管理
  • Vuex详细使用参考 VueX(Vue状态管理模式) 写的很详细

  • 安装Vuex

    cnpm install vuex --save
    

    D:\temp\xiaorenshu-ui>cnpm install vuex --save
    √ Installed 1 packages
    √ Linked 1 latest versions
    √ Run 0 scripts
    √ All packages installed (1 packages installed from npm registry, used 887ms(network 880ms), speed 123.66kB/s, json 2(38.41kB), tarball 70.41kB)

  • 引入到项目中

    在src目录下新建目录store,新建index.js ,如下

    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex);
    
    const store = new Vuex.Store({
        store: {
            name: "xiaoming"
        },
        mutations: { //用来修改store内的值 必须同步执行
            changename: (state, newname) => {
                state.store.name = newname;
            }
        },
        getters: { //可以认为是 store 的计算属性
            getnamelength: (state) => {
                return state.name.length;
            }
        },
        actions: { //我们可以在 action 内部执行异步操作
            getASynNameLength: (context) => {
                setTimeout(() => {
                    context.commit('changename')
                }, 1000)
            }
        }
    
    })
    
    export default store;
    

    在main.js中引入

    import Vue from 'vue'
    import ElementUI from 'element-ui'
    import 'element-ui/lib/theme-chalk/index.css'
    import './assets/icon/iconfont.css' //引入第三方icon库
    import App from './App.vue'
    import router from './router.js'
    import store from "./store"
    
    
    Vue.use(ElementUI);
    
    Vue.config.productionTip = false
    
    
    // 4. 创建和挂载根实例。
    // 记得要通过 router 配置参数注入路由,
    // 从而让整个应用都有路由功能
    new Vue({
      router,
      store, //相当于 store:store,当key和value相同时可简写
      render: h => h(App)
    }).$mount('#app')
    
  • 调用

    this.$state.name;访问state取值
    this.$state.commit("changename", user.name);访问mutations同步修改名称
    this.$state.getters.getnamelength;访问getters取值
    this.$state.dispatch.getASynNameLength;访问actions异步取值
    
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郝さん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值