摘要:原文地址對于沒有了解過的童鞋,建議先去看看官方的教程傳送門新版本的新特性插件使用的插件,可以很快的搭建一個項目的結構。使用時直接引入即可。的界面讓管理項目變得更加簡單。如遷移過程中有任何疑問,可以留言一起探討。
原文地址
對于沒有了解過 vue-cli3 的童鞋,建議先去看看官方的教程: 傳送門新版本的新特性 1. 插件
使用 cli 的插件,可以很快的搭建一個項目的結構。如 axios 的插件 vue-cli-plugin-axios,可以自動創建一個帶有 request 和 resonpose 的攔截器的 axios 的實例的文件。使用時直接引入即可。
ps:一般插件新建的文件都放在 src/plugin 文件夾下。2. 減少配置
vue-cli3 中內置了很多 webpack 的配置,如 babel,各個 css 預編譯器,幾乎只需要安裝完相對應的 loader 即可開箱即用,無需過多的配置即可直接開發。
3. 圖形化自帶的 GUI 界面直接將上手成本置為 0。在終端中運行命令: vue ui 打開瀏覽器中就可以愉快的使用 GUI 進行項目管理。
vue-cli2 的遷移 src直接覆蓋即可。
static直接復制到新項目的 public/static 即可。
index.html復制覆蓋至 public 目錄下的 index.html 即可。
CDN 配置舊版的可以看這里:記一次使用 vue-admin-template 的優化歷程
新版的基本不用怎么修改即可直接使用:
const webpack = require("webpack") const path = require("path") const HtmlWebpackIncludeAssetsPlugin = require("html-webpack-include-assets-plugin") const Vue = require("vue") const Buefy = require("buefy/package.json") const AV = require("leancloud-storage") const externals = { // "element-ui":"ELEMENT" } const assets = [ { path: "https://unpkg.com/buefy@0.6.6/lib/buefy.min.css", type: "css"} ] console.log(process.env.NODE_ENV, AV.version) const isProd = process.env.NODE_ENV === "production" if (isProd) { externals["vue"] = "Vue" externals["buefy"] = "Buefy" externals["leancloud-storage"] = "AV" // externals["element-ui"] = "ELEMENT" assets.push( { path: `https://lib.baomitu.com/vue/${Vue.version}/vue.min.js`, type: "js" }, { path: `https://unpkg.com/buefy@${Buefy.version}/lib/index.js`, type: "js" }, { path: `https://cdn.jsdelivr.net/npm/leancloud-storage@${AV.version}/dist/av-min.js`, type: "js" }, ) } const plugins = [{ name: "html-assets", func: HtmlWebpackIncludeAssetsPlugin, options: { assets, // 是否在 webpack 注入的 js 文件后新增?true 為 append, false 為 prepend。 // 生產環境中,這些 js 應該先加載。 append: !isProd, publicPath: "", } }, { name: "dll", func: webpack.DllReferencePlugin, options: { context: path.join(__dirname, "../"), manifest: require("../configs/vendor-manifest.json") } }] module.exports = { externals, plugins }DLL Plugin
舊版的可以看這里:記一次使用 vue-admin-template 的優化歷程
主要還是 webpack4 只需要配置一個 mode: "production" 即可,無需再額外配置繁瑣的 webpack.optimization。
package.json 中添加新的命令:
{ "build:dll": "webpack --config configs/dll.js --mode production" }
再安裝新的命令包,讓 yarn/npm 可以直接使用 webpack 命令:
$ yarn add -D webpack-command
新增 configs/dll.js 文件:
const webpack = require("webpack"); const path = require("path"); const utils = { assetsPath: function (_path) { const assetsSubDirectory = process.env.NODE_ENV === "production" // 生產環境下的 static 路徑 ? "static" // 開發環境下的 static 路徑 : "static" return path.posix.join(assetsSubDirectory, _path) } } function resolve(dir) { return path.join(__dirname, "..", dir) } const vendors = [ // 這里填寫需要打進 dll 的包名。 ]; const context = path.join(__dirname, "../") const webpackConfig = { // 無需配置 webpack.optimization mode: "production", context, output: { path: path.join(__dirname, "../public/js/"), filename: "[name].dll.js", library: "[name]_[hash]", }, entry: { "vendor": vendors, }, plugins: [ new webpack.DllPlugin({ context, path: path.join(__dirname, ".", "[name]-manifest.json"), name: "[name]_[hash]", }) ], module: { // 如用不上可以刪除。 rules: [{ test: /.js$/, loader: "babel-loader", include: [resolve("src"), resolve("test"), resolve("node_modules/webpack-dev-server/client")] }, { test: /.(png|jpe?g|gif|svg)(?.*)?$/, loader: "url-loader", options: { limit: 10000, name: utils.assetsPath("img/[name].[hash:7].[ext]") } }, { test: /.(mp4|webm|ogg|mp3|wav|flac|aac)(?.*)?$/, loader: "url-loader", options: { limit: 10000, name: utils.assetsPath("media/[name].[hash:7].[ext]") } }, { test: /.(woff2?|eot|ttf|otf)(?.*)?$/, loader: "url-loader", options: { limit: 10000, name: utils.assetsPath("fonts/[name].[hash:7].[ext]") } } ] } }; module.exports = webpackConfig其他配置
vue-cli3 的其他所有 webpack 都可以通過 vue.config.js 進行配置,需要手動新建。
vue.config.js
const {externals, plugins} = require("./config/cdn") module.exports = { baseUrl: process.env.NODE_ENV === "production" ? "/PRODUCTION/" : "/", chainWebpack: config => { // use webpack-chain instead of webpack.config // 注入 cdn 和 dll 插件 plugins.forEach(plugin => { config.plugin(plugin.name) .use(plugin.func, [plugin.options]) }) // 使用 externals. config.externals(externals) } }
推薦在 vue.config.js 中使用 webpack-chain 進行配置
安裝尤大的 pug-plain-loader: yarn add -D pug-plain-loader
chainWebpack 添加:
config.module .use("pug").test(/.pug$/) .end()
只需要安裝 sass-loader 即可。
如需使用 fast-sass-loader 代替,則需要修改配置:
;["scss", "sass"].forEach(style => { ["vue", "vue-modules", "normal-modules", "normal"].forEach(one => { config.module.rule(style) .oneOf(one) .use("sass-loader") .loader("fast-sass-loader") .end() }) })
未研究出,卒。
總結不得不說,新版的 cli 真的很方便新手,配合 webpack-chain 也可以清晰明了的去配置 webpack,只是兼容性需要一步步去摸索。GUI 的界面讓管理 vue 項目變得更加簡單。
如遷移過程中有任何疑問,可以留言一起探討。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98007.html
摘要:安裝與初始化過程中遇到的坑,以此記錄。安裝依賴于,地址對應自己的系統選擇相應的版本即可,這里推薦下載版本直接安裝。至此,項目構建成功,如果遺漏或錯誤,懇請指出并加以修改。 vue安裝與初始化過程中遇到的坑,以此記錄。 1.安裝vue依賴于node.js,地址:http://nodejs.cn/download/showImg(https://segmentfault.com/img/b...
摘要:現在執行如上查詢,結果為使用內連接和左連接的兩條語句,執行結果保持一致,都能顯示出各組最大值的多行記錄。子句常與聚集函數聯用,此時聚集函數以基本組為計算對象。 這里探討了分組查詢最大值(group-wise-max)的問題。涉及到 SQL 查詢語句中的 GROUP BY 子句及連接(JOIN)操作。 問題 本文緣起于 SegmentFault上 的一個問題:http://segment...
摘要:我可以明確告訴你這不是,但它可以用解釋器運行。這種黑魔法,還要從說起。提案者設想使用一種特殊的文件首注釋,用于指定代碼的編碼。暴露了一個函數,用于注冊自定義編碼。所謂的黑魔法其實并不神秘,照貓畫虎定義好相應的接口即可。 首發于我的博客,轉載請注明出處 寫在前面 本文為科普文 本文中的例子在 Ubuntu 14.04 / Python 2.7.11 下運行成功,Python 3+ 的接...
閱讀 1179·2023-04-26 02:38
閱讀 1473·2021-11-22 09:34
閱讀 1180·2021-09-26 10:19
閱讀 3159·2019-08-29 17:15
閱讀 3515·2019-08-29 12:27
閱讀 1715·2019-08-26 13:51
閱讀 1858·2019-08-26 13:47
閱讀 1010·2019-08-26 12:20