美文网首页
搭建配置vux项目

搭建配置vux项目

作者: aimee66 | 来源:发表于2019-05-01 10:29 被阅读0次

    强烈推荐vux插件,非常好用的移动端vue组件

    首先还是需要创建vue项目,然后再安装vux依赖

    开始创建vue项目

    VueJs操作命令

    • 安装一个框架: vue init webpack-simple vue_test
    • 安装各种模块:cnpm install

    如使用路由和网络请求 还需安装vue-router和vue-resource,全局状态vuex

    • 安装vue-router :cnpm install vue-router --save
    • 安装vue-resource: cnpm install vue-resource --save
    • 安装vue-vuex cnpm install vue-vuex--save
    • 启动框架: cnpm run dev
      已经可以运行啦

    注:

    cnpm install模块名--save-dev(关于环境的,表现为npmrun dev 启动不了)
    cnpm install模块名 --save(关于项目的,比如main.js,表现为npm run dev 成功之后控制台报错)-S是简写

    由于webpack打包时无法识别css,得安装以下模块,让webpack可以解析css文件

    cnpm install style-loader --save-dev
    cnpm install css-loader --save-dev
    cnpm install file-loader --save-dev

    安装vux插件(官网上注明直接用nmp安装,cnpm 可能更新不及时)

    • 安装vux npm install vux --save
    • 安装vux-loader npm install vux-loader --save-dev

    完整安装配置表

    {
      "name": "xyspring",
      "description": "spring xingyuan",
      "version": "1.0.0",
      "author": "aimee1608 <shuigongqian@sina.com>",
      "license": "MIT",
      "private": true,
      "scripts": {
        "dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
        "build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
      },
      "dependencies": {
        "vue": "^2.5.11",
        "vue-resource": "^1.5.0",
        "vue-router": "^3.0.1",
        "vuex": "^3.0.1",
        "vux": "^2.8.0"
      },
      "browserslist": [
        "> 1%",
        "last 2 versions",
        "not ie <= 8"
      ],
      "devDependencies": {
        "babel-core": "^6.26.0",
        "babel-loader": "^7.1.2",
        "babel-preset-env": "^1.6.0",
        "babel-preset-stage-3": "^6.24.1",
        "cross-env": "^5.0.5",
        "css-loader": "^0.28.7",
        "extract-text-webpack-plugin": "^4.0.0-beta.0",
        "file-loader": "^1.1.4",
        "less": "^2.7.3",
        "less-loader": "^4.1.0",
        "style-loader": "^0.20.3",
        "vue-loader": "^13.0.5",
        "vue-template-compiler": "^2.4.4",
        "vux-loader": "^1.2.2",
        "webpack": "^3.6.0",
        "webpack-dev-server": "^2.9.1"
      }
    }
    
    

    webpack.config.js 配置

    因为vux主要是组件居多,样式和组件的引用是基于vux-loader,需要设置vux-loader;
    添加识别css less vux js的规则

          {
              test: /\.css$/,
              use: [
                'vue-style-loader',
                'css-loader'
              ],
            },      {
              test: /\.vue$/,
              loader: 'vue-loader',
              options: {
                loaders: {
                }
                // other vue-loader options go here
              }
            },
            {
              test: /\.js$/,
              loader: 'babel-loader',
              exclude: /node_modules/
            },
            {
              test: /\.(png|jpg|gif|svg)$/,
              loader: 'file-loader',
              options: {
                name: '[name].[ext]?[hash]'
              }
            },
            {
                  test: /\.less$/,
    
                  loader: "style-loader!css-loader!less-loader",
              },
              {
                test: /\.(png|jpg|gif|svg|woff|ttf|eot|woff2)$/,
                loader: 'file-loader',
                options: {
                  name: '[name].[ext]?[hash]'
                }
            },
              {
                test: /vux.src.*?js$/,
                loader: 'babel'
              }
    
    

    完整配置如下:

    var path = require('path')
    var webpack = require('webpack')
    const vuxLoader = require('vux-loader')
    let webpackConfig = {
        entry: './src/main.js',
        output: {
          path: path.resolve(__dirname, './dist'),
          publicPath: 'dist/',
          filename: 'build.js'
        },
        module: {
          rules: [
            {
              test: /\.css$/,
              use: [
                'vue-style-loader',
                'css-loader'
              ],
            },      {
              test: /\.vue$/,
              loader: 'vue-loader',
              options: {
                loaders: {
                }
                // other vue-loader options go here
              }
            },
            {
              test: /\.js$/,
              loader: 'babel-loader',
              exclude: /node_modules/
            },
            {
              test: /\.(png|jpg|gif|svg)$/,
              loader: 'file-loader',
              options: {
                name: '[name].[ext]?[hash]'
              }
            },
            {
                  test: /\.less$/,
    
                  loader: "style-loader!css-loader!less-loader",
              },
              {
                test: /\.(png|jpg|gif|svg|woff|ttf|eot|woff2)$/,
                loader: 'file-loader',
                options: {
                  name: '[name].[ext]?[hash]'
                }
            },
              {
                test: /vux.src.*?js$/,
                loader: 'babel'
              }
    
          ]
        },
        resolve: {
          alias: {
            'vue$': 'vue/dist/vue.esm.js'
          },
          extensions: ['*', '.js', '.vue', '.json','.less']
        },
        devServer: {
          historyApiFallback: true,
          noInfo: true,
          overlay: true
        },
        performance: {
          hints: false
        },
        // devtool: '#cheap-module-source-map'
    }
    
    module.exports = vuxLoader.merge(webpackConfig, {
      plugins: [{name:'vux-ui'},{name: 'duplicate-style'}]
    })
    
    if (process.env.NODE_ENV === 'production') {
      module.exports.devtool = '#source-map'
      // http://vue-loader.vuejs.org/en/workflow/production.html
      module.exports.plugins = (module.exports.plugins || []).concat([
        new webpack.DefinePlugin({
          'process.env': {
            NODE_ENV: '"production"'
          }
        }),
        new webpack.optimize.UglifyJsPlugin({
          sourceMap: true,
          compress: {
            warnings: false
          }
        }),
        new webpack.LoaderOptionsPlugin({
          minimize: true
        })
      ])
    }
    
    

    入口文件

    import Vue from 'vue'
    import Vuex from 'vuex'
    import VueRouter from 'vue-router'
    import VueResource from 'vue-resource'
    import routes from './router/routes.js'//路由模块文件
    
    Vue.use(Vuex)
    Vue.use(VueRouter)
    Vue.use(VueResource)
    
    
    
    const router = new VueRouter({   
        routes
    })
    
    var vm = new Vue({
      el: '#app',
      router,
      store
    })
    

    路由模块

    const routes =[
        {//首页
            path:'/',
            component: resolve => require(['../components/mainTem/Home.vue'],resolve),
            meta:{auth:true,keepAlive: true },
            name:'Home'
        },//登录
        {
            path:'/Login',
            component: resolve => require(['../components/mainTem/Login.vue'],resolve),
            meta:{auth:true,keepAlive: false},
            name:'Login'
        }
        ...
    ]
    
    export default routes
    

    组件引用

    按需引入

    <template>
        <div>
            <group class="lo-phone info" >
                  <x-input type="number"  placeholder="输入手机号码"   v-model="phone" :min="11" :max="11"></x-input>
                </group>
        </div>
    </template>
    import { XInput, Group } from 'vux'
    export default {
      data() { //选项 / 数据
                return {
                    phone:15539383737
            }
        }
      components: {
        XInput,
        Group
      }
    }
    

    相关文章

      网友评论

          本文标题:搭建配置vux项目

          本文链接:https://www.haomeiwen.com/subject/wqovnqtx.html