————僅以此文記錄我的使用vuejs開發項目對一些需求的處理方法,不按期更新...css
//index.htmlhtml
<link href="./favicon.ico" rel="icon" type="image/x-icon" />
// build/webpack.dev.conf.jsvue
new HtmlWebpackPlugin({ filename: 'index.html', template: 'index.html', inject: true, favicon: path.resolve('favicon.ico') })
npm install -D sass-resources-loaderwebpack
//build/utils.jsios
return { css: generateLoaders(), postcss: generateLoaders(), less: generateLoaders('less'), sass: generateLoaders('sass', { indentedSyntax: true }), scss: generateLoaders('sass').concat( { loader: 'sass-resources-loader', options: { resources: path.resolve(__dirname, '../src/styles/variables.scss') } } ), stylus: generateLoaders('stylus'), styl: generateLoaders('stylus') }
//.eslintignorees6
/build/ /config/ /dist/ /*.js /test/unit/coverage/ /src/plugins
//templateweb
<div class="agreement" ref="html" v-html="agreement.contractContent"></div>
//scriptvue-router
updated () { this.$refs.html.childNodes.forEach(element => { element.style.fontSize = '0.3rem' }) }
//templatenpm
<input type = "text" v-bind:value="kilometers | changeToMoney">
//scriptjson
filters:{ changeToMoney:function(value){ return "$"+value; } }
//template
<transition :name="transitionName"> <keep-alive> <router-view class="child-view"></router-view> </keep-alive> </transition>
//script
data () { return { transitionName: 'slide-left' } }, // 監聽路由的路徑,能夠經過不一樣的路徑去選擇不一樣的切換效果 watch: { '$route' (to, from) { console.log('如今路由:', to.path.split('/')[1], '來自路由:', from.path.split('/')[1], '如今的動畫:', this.transitionName) const toDepth = to.path.split('/').length const fromDepth = from.path.split('/').length this.transitionName = toDepth < fromDepth ? 'slide-right' : 'slide-left' } }
//script
routes: [ { path: '/', name: 'Home', component: Home; }, beforeEnter: (to, from, next) => { ...dosomething() next() }, redirect: { path: 'anotherPage' }, children: [] } ]
/build/webpack.config.prod.conf.js
new UglifyJsPlugin({ uglifyOptions: { compress: { warnings: false, drop_debugger: true, //add drop_console: true //add } }, sourceMap: config.build.productionSourceMap, parallel: true }),
/utils.js
ExtractTextPlugin.extract({ use: loaders, publicPath:'../../', //add fallback: 'vue-style-loader' })
axios是基於Promise的,若是須要兼容低版本瀏覽器如ie11及如下,須要引入polyfill。
Polyfill 推薦使用 es6-promise
To install:
npm install es6-promise-polyfill
To use:
var Promise = require('es6-promise-polyfill').Promise; var promise = new Promise(...);
//package.json
"win": { "icon": "build/icons/icon.ico", "target": [ { "target": "nsis", "arch": [ "ia32" ] } ] },
//.electron-vue/dev-runner.js
function startRenderer(){ ... proxy: { '/api': { target: 'http://192.168.74.222:6019', // secure: false, // 若是是https接口,須要配置這個參數 changeOrigin: true, // 若是接口跨域,須要進行這個參數配置 pathRewrite: { '^/api': '' } } } ... }
const BrowserWindow = require('electron').remote.BrowserWindow const winURL = process.env.NODE_ENV === 'development' ? `http://localhost:9080/#/new` : `file://${__dirname}/index.html#new` let newWindow = new BrowserWindow({ height: 600, width: 800 }) newWindow.loadURL(winURL) newWindow.on('closed', () => { newWindow = null })