本文共 6003 字,大约阅读时间需要 20 分钟。
首先还是需要创建vue项目,然后再安装vux依赖
cnpm install模块名–save-dev(关于环境的,表现为npmrun dev 启动不了)
cnpm install模块名 –save(关于项目的,比如main.js,表现为npm run dev 成功之后控制台报错)-S是简写cnpm install style-loader –save-dev
cnpm install css-loader –save-dev cnpm install file-loader –save-dev完整安装配置表
{ "name": "xyspring", "description": "spring xingyuan", "version": "1.0.0", "author": "aimee1608", "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" }}
因为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
按需引入
import { XInput, Group } from 'vux'export default { data() { //选项 / 数据 return { phone:15539383737 } } components: { XInput, Group }}
转载地址:http://mzhbb.baihongyu.com/