摘要:用于添加到模版頁面,如下面的頁面模版正確輸出和的路徑配置生成的文件,定義路徑等模板路徑每個引用的模塊插入位置需要生成幾個文件,就配置幾個對象修改配置文件修改在中會引用,這里就是對應的根目錄,改成你想要輸出的地址就好了。
單頁配置相對于多頁簡單很多,這個是公司同事總結(jié)共享的多頁配置
vue-cli-multipage首先安裝vue-cli
npm install vue-cli -g vue init webpack my-project cd my-project npm install
下面是vue-cli的配置目錄
/build build.js #構(gòu)建生產(chǎn)代碼 dev-client.js dev-server.js #執(zhí)行本地服務器 utils.js #額外的通用方法 webpack.base.conf.js #默認的webpack配置 webpack.dev.conf.js #本地開發(fā)的webpack配置 webpack.prod.conf.js #構(gòu)建生產(chǎn)的webpack配置 /config 配置文件 dev.env.js index.js pord.env.js test.env.js /src assets #放資源 components #組件 /module #頁面模塊 /home #子頁面 index.html #模版頁面 index.js #js入口修改build.js
注釋掉其中的兩句,因為這里不需要刪除所有的文件
var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory) // rm("-rf", assetsPath) // 這里是移除根目錄 // mkdir("-p", assetsPath) // 新建根目錄 cp("-R", "static/*", assetsPath) // 復制資源修改默認的webpack配置webpack.base.conf.js
生成需要的入口文件
var glob = require("glob") var entries = getEntry("./src/module/**/*.js") // 獲得入口js文件 function getEntry(globPath) { var entries = {}, basename, tmp, pathname; glob.sync(globPath).forEach(function (entry) { basename = path.basename(entry, path.extname(entry)); tmp = entry.split("/").splice(-3); pathname = tmp.splice(1, 1) + "/" + basename; // 正確輸出js和html的路徑 entries[pathname] = entry; }); return entries; } module.exports = { entry: entries, ...修改本地開發(fā)的webpack配置webpack.dev.conf.js
這里是和本地服務器有關(guān)的配置
這里是根據(jù)目錄生成對應的頁面
var path = require("path") var glob = require("glob") var pages = getEntry("./src/module/**/*.html") function getEntry(globPath) { var entries = {}, basename, tmp, pathname glob.sync(globPath).forEach(function (entry) { basename = path.basename(entry, path.extname(entry)) tmp = entry.split("/").splice(-3) pathname = tmp.splice(1, 1) + "/" + basename // 正確輸出js和html的路徑 entries[pathname] = entry }) return entries } for (var pathname in pages) { // 配置生成的html文件,定義路徑等 var conf = { filename: pathname + ".html", template: pages[pathname], // 模板路徑 chunks: [pathname, "vendor", "manifest"], // 每個html引用的js模塊 inject: true // js插入位置 } // 需要生成幾個html文件,就配置幾個HtmlWebpackPlugin對象 module.exports.plugins.push(new HtmlWebpackPlugin(conf)) }修改構(gòu)建生產(chǎn)的webpack配置webpack.prod.conf.js
這里是最后打包的配置
1.首先根據(jù)目錄生成頁面,這里都用到webpack的HtmlWebpackPlugin插件
2.配置里面可以自定義屬性。用于添加到模版頁面,如下面的setPath
頁面模版 <%= htmlWebpackPlugin.options.setPath %><%= htmlWebpackPlugin.options.title %>
var glob = require("glob") function getEntry(globPath) { var entries = [], basename, tmp, pathname glob.sync(globPath).forEach(function (entry) { basename = path.basename(entry, path.extname(entry)) tmp = entry.split("/").splice(-3) pathname = tmp.splice(1, 1) + "/" + basename // 正確輸出js和html的路徑 entries[pathname] = entry }) return entries } var pages = getEntry("./src/module/**/*.html") for (var pathname in pages) { // 配置生成的html文件,定義路徑等 var conf = { setPath: "config->item("domain_static"); ?>", getPath: "", oData: "", filename: pathname + ".php", template: pages[pathname], // 模板路徑 minify: { removeComments: true, collapseWhitespace: true, removeAttributeQuotes: true // more options: // https://github.com/kangax/html-minifier#options-quick-reference }, chunksSortMode: "dependency", chunks: [pathname, "vendor", "manifest"], // 每個html引用的js模塊 inject: true // js插入位置 } // 需要生成幾個html文件,就配置幾個HtmlWebpackPlugin對象 webpackConfig.plugins.push(new HtmlWebpackPlugin(conf)) } module.exports = webpackConfig修改配置文件config
修改config/index.js
在build.js中會引用assetsRoot,這里就是對應的根目錄,改成你想要輸出的地址就好了。ps:這里是相對地址
assetsPublicPath會被引用插入到頁面的模版中,這個是你資源的根目錄
// see http://vuejs-templates.github.io/webpack for documentation. var path = require("path") module.exports = { build: { env: require("./prod.env"), index: path.resolve(__dirname, "../dist/index.html"), assetsRoot: path.resolve(__dirname, "../dist"), assetsSubDirectory: "", assetsPublicPath: "/dist/", productionSourceMap: true, // Gzip off by default as many popular static hosts such as // Surge or Netlify already gzip all static assets for you. // Before setting to `true`, make sure to: // npm install --save-dev compression-webpack-plugin productionGzip: false, productionGzipExtensions: ["js", "css"] }, dev: { env: require("./dev.env"), port: 8080, assetsSubDirectory: "static", assetsPublicPath: "/", proxyTable: {}, // CSS Sourcemaps off by default because relative paths are "buggy" // with this option, according to the CSS-Loader README // (https://github.com/webpack/css-loader#sourcemaps) // In our experience, they generally work as expected, // just be aware of this issue when enabling this option. cssSourceMap: false } }復制資源文件到后臺設(shè)置的相應目錄 創(chuàng)建cp.js
require("./check-versions")() require("shelljs/global") env.NODE_ENV = "production" var path = require("path") var ora = require("ora") var jsDist = path.resolve(__dirname, "../dist/js") var cssDist = path.resolve(__dirname, "../dist/css") var webDist = path.resolve(__dirname, "../dist/web") var mobileDist = path.resolve(__dirname, "../dist/mobile") var pubPath = path.resolve(__dirname, "../../public/dist") var webview = path.resolve(__dirname, "../../web/views/") rm("-rf", pubPath) mkdir("-p", pubPath) cp("-R", jsDist, pubPath) cp("-R", cssDist, pubPath) cp("-R", webDist, webview) cp("-R", mobileDist, webview)修改package.json
{ "name": "y", "version": "1.0.0", "description": "A Vue.js project", "author": "lujs", "private": true, "scripts": { "dev": "node build/dev-server.js", //執(zhí)行相應的npm run命令 "build": "node build/build.js", "cp": "node build/cp.js" }, "dependencies": { "vue": "^2.1.0" }, "devDependencies": { //在項目根目錄執(zhí)行npm install會下載相關(guān)的依賴 "autoprefixer": "^6.4.0", "babel-core": "^6.0.0", "babel-loader": "^6.0.0", "babel-plugin-component": "^0.6.0", "babel-plugin-transform-runtime": "^6.0.0", "babel-preset-es2015": "^6.0.0", "babel-preset-stage-2": "^6.0.0", "babel-register": "^6.0.0", "chalk": "^1.1.3", "connect-history-api-fallback": "^1.1.0", "css-loader": "^0.25.0", "element-ui": "^1.0.4", "eventsource-polyfill": "^0.9.6", "express": "^4.13.3", "extract-text-webpack-plugin": "^1.0.1", "file-loader": "^0.9.0", "function-bind": "^1.0.2", "html-webpack-plugin": "^2.8.1", "http-proxy-middleware": "^0.17.2", "json-loader": "^0.5.4", "opn": "^4.0.2", "ora": "^0.3.0", "semver": "^5.3.0", "shelljs": "^0.7.4", "url-loader": "^0.5.7", "vue-loader": "^10.0.0", "vue-style-loader": "^1.0.0", "vue-template-compiler": "^2.1.0", "webpack": "^1.13.2", "webpack-dev-middleware": "^1.8.3", "webpack-hot-middleware": "^2.12.2", "webpack-merge": "^0.14.1" }, "engines": { "node": ">= 4.0.0", "npm": ">= 3.0.0" } }其他 使用淘寶鏡像
https://npm.taobao.org/ 使用淘寶鏡像
$ npm install -g cnpm --registry=https://registry.npm.taobao.org 使用cpm代替默認的npm切換node版本
https://github.com/alsotang/n... 使用nvm管理node
1.安裝nvm$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.2/install.sh | bash $ nvm 有內(nèi)容輸出則說明安裝成功了2.安裝node
$ nvm install 0.12 后面指定要安裝的node版本 $ nvm ls 查看安裝的所有node版本,那個綠色小箭頭的意思就是現(xiàn)在正在使用的版本3.切換node版本
nvm use 0.12 后面指定你要使用的node版本 node -v 查看當前node版本4.完善安裝
檢查 ~/.profile 或者 ~/.bash_profile 中有沒有這樣兩句
export NVM_DIR="/Users/YOURUSERNAME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
這兩句會在bash啟動的時候被調(diào)用,然后注冊nvm命令
調(diào)用
$ nvm ls
有default的指向,沒有就執(zhí)行
$ nvm alias default 0.12
再
$ nvm ls
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/91802.html
摘要:適用于主要入口頁面生成多頁,子頁面和次要頁面使用單頁形式的項目。文件用來存放固定的數(shù)據(jù),而文件可更加自由的處理并返回數(shù)據(jù)。 VUE2的單頁應用框架有人分享了,多頁應用框架也有人分享了,這里分享一個單頁+多頁的混合應用框架吧,node.js寫了一個簡單的mock服務也集成在里面,整體初現(xiàn)雛形,還有很多需要優(yōu)化和改善的地方。。。 項目結(jié)構(gòu) │ ├─build ...
摘要:在項目配置中的探索持續(xù)更新中后臺配置一項目需求請認真看目錄結(jié)構(gòu)項目構(gòu)建很大都基于目錄來的線上用戶訪問的目錄線上資源文件目錄前端開發(fā)目錄一個業(yè)務需求模塊每個業(yè)務需求模塊下會有很多頁面 WebPack在項目配置中的探索(持續(xù)更新中) webpack + gulp + vue (thinkPHP后臺配置) 一、項目需求(請認真看目錄結(jié)構(gòu),項目構(gòu)建很大都基于目錄來的) --- Applicat...
摘要:說簡單點就是,有個頁面,就要在中寫個所以這里就必須要再寫一個批量生成的函數(shù),和生成入口配置是一個道理的。熟肉在這之后還會再寫多一片文章,通過使用這個配置來對舊項目進行重構(gòu)。 本文的webpack配置是基于vue-cli改良的,且面向有一定基礎(chǔ)的人 初始準備工作 使用vue init webpack指令構(gòu)建好一個初始的項目,刪除無關(guān)的東西,更改一下項目目錄如下 并且把src sta...
摘要:然后類似一樣我的命名是可以在頁面的任何地方使用,如果你對具體的實現(xiàn)方法有興趣,歡迎點擊本文結(jié)尾的鏈接,去我的倉庫上查看。 前言 最近收到一個這樣的需求,要求做一個基于 vue 和 element-ui 的通用后臺框架頁,具體要求如下: 要求通用性高,需要在后期四十多個子項目中使用,所以大部分地方都做成可配置的. 要求做成腳手架的形式.可以 npm 安裝 要求實現(xiàn)多頁簽,并且可以通過瀏...
摘要:然后類似一樣我的命名是可以在頁面的任何地方使用,如果你對具體的實現(xiàn)方法有興趣,歡迎點擊本文結(jié)尾的鏈接,去我的倉庫上查看。 前言 最近收到一個這樣的需求,要求做一個基于 vue 和 element-ui 的通用后臺框架頁,具體要求如下: 要求通用性高,需要在后期四十多個子項目中使用,所以大部分地方都做成可配置的. 要求做成腳手架的形式.可以 npm 安裝 要求實現(xiàn)多頁簽,并且可以通過瀏...
閱讀 3077·2019-08-30 15:56
閱讀 1234·2019-08-29 15:20
閱讀 1571·2019-08-29 13:19
閱讀 1473·2019-08-29 13:10
閱讀 3381·2019-08-26 18:27
閱讀 3069·2019-08-26 11:46
閱讀 2234·2019-08-26 11:45
閱讀 3753·2019-08-26 10:12