vue-cli项目实操(一)

1、安装nodejs:https://nodejs.org/en/ 

2、安装淘宝npm镜像 cnpm:

npm install -g cnpm --registry=https://registry.npm.taobao.org

3、安装脚手架vue-cli:

cnpm install -g vue-cli  

4、创建vue项目:

vue init webpack test

5、安装信息填写:

  • Project name (vuetest):项目名称,可以为空,使用默认,不能大写;
  • Project description (A Vue.js project)  项目描述,可以为空,使用默认;
  • Author   作者;
  • Runtime + Compiler: recommended for most users    运行加编译,选择;
  • Runtime-only: about 6KB lighter min+gzip, but templates (or any Vue-specificHTML) are ONLY allowed in .vue files - render functions are required elsewhere   仅运行时;
  • Install vue-router? (Y/n) 是否安装路由;
  • Use ESLint to lint your code? (Y/n)      是否使用ESLint管理代码,代码风格管理工具,用来统一代码风格,多人协作用;
  • Pick an ESLint preset (Use arrow keys)  选择一个ESLint预设,编写vue项目时的代码风格;
  • Setup unit tests with Karma + Mocha? (Y/n)  是否安装单元测试;
  • Setup e2e tests with Nightwatch(Y/n)?     是否安装e2e测试 ;

6、安装依赖:(据说cnpm没有npm稳定,会漏安装一些包)

cnpm i

7、运行开发环境:

npm run dev

8、运行生产环境:

npm run build

9、引入bootstrap:

  • 下载bootstrap: http://www.bootcss.com/
  • 引入jquery依赖:(查看版本:npm view jquery versions)
  • npm i jquery@1.11.3 --save-dev   
  • 修改webpack.base.conf.js文件:
  • ...
    var webpack = require('webpack')
    ...
    alias: {
    'vue$': 'vue/dist/vue.esm.js', '@': resolve('src'), 'assets': path.resolve(__dirname, '../src/assets'),
      'jquery': "jquery/src/jquery" }

    ...

      plugins: [
       new webpack.ProvidePlugin({
            $:"jquery",
            jQuery:"jquery",
            "windows.jQuery":"jquery"
        })
      ]

     
  • 在入口文件main.js中加入:
  • //bootstrap

    import $ from 'jquery'
    import './assets/bootstrap/css/bootstrap.min.css'
    import './assets/bootstrap/js/bootstrap.min.js'

  • 如果报长串错误,说明bootstrap.js文件格式不匹配不能通过webpack的格式检查,修改webpack.base.conf.js文件:
  •      {
            test: /.(js|vue)$/,
            loader: 'eslint-loader',
            enforce: 'pre',
            include: [resolve('src'), resolve('test')],
            exclude: [/js/],  //修改
            options: {
              formatter: require('eslint-friendly-formatter')
            }
          }

10、components目录下新建文件index.vue,复制bootstrap导航模板:

<template>  
  <nav class="navbar navbar-default" role="navigation">  
    <div class="container-fluid">  
      <!-- Brand and toggle get grouped for better mobile display -->  
      <div class="navbar-header">  
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">  
          <span class="sr-only">Toggle navigation</span>  
          <span class="icon-bar"></span>  
          <span class="icon-bar"></span>  
          <span class="icon-bar"></span>  
        </button>  
        <a class="navbar-brand" href="#">{{ msg }}</a>  
      </div>  
  
      <!-- Collect the nav links, forms, and other content for toggling -->  
      <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">  
        <ul class="nav navbar-nav">  
          <li class="active"><a href="#">Link</a></li>  
          <li><a href="#">Link</a></li>  
          <li class="dropdown">  
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <span class="caret"></span></a>  
            <ul class="dropdown-menu" role="menu">  
              <li><a href="#">Action</a></li>  
              <li><a href="#">Another action</a></li>  
              <li><a href="#">Something else here</a></li>  
              <li class="divider"></li>  
              <li><a href="#">Separated link</a></li>  
              <li class="divider"></li>  
              <li><a href="#">One more separated link</a></li>  
            </ul>  
          </li>  
        </ul>  
        <form class="navbar-form navbar-left" role="search">  
          <div class="form-group">  
            <input type="text" class="form-control" placeholder="Search">  
          </div>  
          <button type="submit" class="btn btn-default">Submit</button>  
        </form>  
        <ul class="nav navbar-nav navbar-right">  
          <li><a href="#">Link</a></li>  
          <li class="dropdown">  
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <span class="caret"></span></a>  
            <ul class="dropdown-menu" role="menu">  
              <li><a href="#">Action</a></li>  
              <li><a href="#">Another action</a></li>  
              <li><a href="#">Something else here</a></li>  
              <li class="divider"></li>  
              <li><a href="#">Separated link</a></li>  
            </ul>  
          </li>  
        </ul>  
      </div><!-- /.navbar-collapse -->  
    </div><!-- /.container-fluid -->  
  </nav>  
</template>  

<script>
export default {
  name: 'Index',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped></style>

11、router目录下index.js:

import Vue from 'vue'
import Router from 'vue-router'
import Index from '@/components/Index'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'Index',
      component: Index
    }
  ]
})

效果如图所示,则成功引入bootstrap:

原文地址:https://www.cnblogs.com/geewonii/p/7406658.html