<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                這節我們演示如何將components的組件打包進生成的html中。 ## 處理模板 ### 1.新建文件目錄 ![](https://box.kancloud.cn/cd1641c2c607e23e0e47bd25549d33f1_219x292.png) **layer.html** ~~~html <div class="layer"> 這是layer的內容 </div> ~~~ **layer.css** ~~~css .layer{ height: 100px; font-size: 50px; background-color: red; } ~~~ **layer.js** ~~~javascript import layerCss from './layer.css'; import template from './layer.html'; function layer(){ return{ name: 'layer', layerCss: layerCss, template: template } } export default layer; ~~~ 我們用的ES6的import語法將這個組件的css和html載入js,然后將訪問的接口通過export default給出去,方便app.js訪問我們這個組件. **模板index.html** ~~~html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>webpackDemo8</title> </head> <body> <div id="app"></div> </body> </html> ~~~ **app.js** ~~~javascript import Layer from './components/layer/layer'; const App = function(){ let app = document.getElementById('app'); let layer = new Layer(); app.innerHTML = layer.template; } new App(); ~~~ 我們通過ES6的import語法將layer.js導出的layer函數引入,然后用過new Layer()實例化這個函數,然后就可以訪問layer內部的變量了,這里是找到id為app的標簽,然后將定義的組件html插入id為app的標簽里面。 ### 2.配置webpack.config ~~~javascript var path = require("path"); //webpack升級到2.0以后,路徑需要引用這個模塊 var htmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { entry: { app: './src/app.js', }, output: { path: path.resolve(__dirname, './dist'), filename: 'js/[name]-bundle.js' }, module: { rules: [{ test: /\.js$/, //用正則匹配找到所有的js文件 include: path.resolve(__dirname, 'src'), //指定babel-loaders尋找的文件路徑,注意需是絕對路徑 exclude: path.resolve(__dirname, 'node_modules'), //排除node_modules文件下js,注意需是絕對路徑 use: { loader: 'babel-loader' } }, { test: /\.css$/, include: path.resolve(__dirname, 'src'), //指定babel-loaders尋找的文件路徑,注意需是絕對路徑 exclude: path.resolve(__dirname, 'node_modules'), //排除node_modules文件下js,注意需是絕對路徑 use: [{ loader: 'style-loader' }, //注意先后順序,一般都要先用css-loader處理完然后用style-loader生成style標簽,但webpack讀取的順序相反 { loader: 'css-loader' } ] }, { test: /\.html$/, use: { loader: 'html-loader' } } ] }, plugins: [ new htmlWebpackPlugin({ filename: 'index.html', template: 'index.html', inject: 'body', title: 'This is my plugin title.', }) ] } ~~~ 這里除了之前的loader和插件以外,新增了一個[html-loader](https://doc.webpack-china.org/loaders/html-loader/) 這個是將.html文件轉為字符串模板,處理模板文件的做法: ①webpack將模板文件當做一個字符串進行處理。(這里使用的作坊) ②webpack將模板文件當成已經編譯好的的模板的處理函數。 **安裝** ~~~ npm install html-loader --save-dev ~~~ ### 3.成功生成,查看html ![](https://box.kancloud.cn/bb0e0bc8877e9f8259c6def72d8a478b_971x415.png) ## 處理ejs模板 在我們的實際項目中,我們的模板會用到模板語法,比如EJS模板,就需要用[ejs-loader](https://www.npmjs.com/package/ejs-loader)進行處理。 ### 1.修改組件layer **layer.html** ~~~html <div class="layer"> <%= name %> <% for (var i = 0; i < arr.length ; i++) { %> <%= arr[i] %> <% } %> </div> ~~~ ### 2.修改app.js ~~~javascript import Layer from './components/layer/layer'; const App = function(){ let app = document.getElementById('app'); let layer = new Layer(); app.innerHTML = layer.template({ name: 'ejs模板', arr: ['1','2','3'] }) } new App(); ~~~ ### 3.修改webpack.config ~~~javascript var path = require("path"); //webpack升級到2.0以后,路徑需要引用這個模塊 var htmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { entry: { app: './src/app.js', }, output: { path: path.resolve(__dirname, './dist'), filename: 'js/[name]-bundle.js' }, module: { rules: [{ test: /\.js$/, //用正則匹配找到所有的js文件 include: path.resolve(__dirname, 'src'), //指定babel-loaders尋找的文件路徑,注意需是絕對路徑 exclude: path.resolve(__dirname, 'node_modules'), //排除node_modules文件下js,注意需是絕對路徑 use: { loader: 'babel-loader' } }, { test: /\.css$/, include: path.resolve(__dirname, 'src'), //指定babel-loaders尋找的文件路徑,注意需是絕對路徑 exclude: path.resolve(__dirname, 'node_modules'), //排除node_modules文件下js,注意需是絕對路徑 use: [{ loader: 'style-loader' }, //注意先后順序,一般都要先用css-loader處理完然后用style-loader生成style標簽,但webpack讀取的順序相反 { loader: 'css-loader' } ] }, { test: /\.html$/, use: { loader: 'ejs-loader' } } ] }, plugins: [ new htmlWebpackPlugin({ filename: 'index.html', template: 'index.html', inject: 'body', title: 'This is my plugin title.', }) ] } ~~~ 只需要把html的loader改成ejs-loader即可。 **安裝** ~~~ npm install ejs-loader --save-dev ~~~ ### 4.成功生成,查看html ![](https://box.kancloud.cn/0c7a96a26667d7a6c81fbb71d5df8687_988x470.png) ## 處理圖片文件 ### 1.修改layer.css ~~~css .layer{ height: 200px; font-size: 50px; background-color: red; background: url('../../assets/background.jpg') no-repeat; } ~~~ ### 2.配置webpack.config ~~~javascript var path = require("path"); //webpack升級到2.0以后,路徑需要引用這個模塊 var htmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { entry: { app: './src/app.js', }, output: { path: path.resolve(__dirname, './dist'), filename: 'js/[name]-bundle.js' }, module: { rules: [{ test: /\.js$/, //用正則匹配找到所有的js文件 include: path.resolve(__dirname, 'src'), //指定babel-loaders尋找的文件路徑,注意需是絕對路徑 exclude: path.resolve(__dirname, 'node_modules'), //排除node_modules文件下js,注意需是絕對路徑 use: { loader: 'babel-loader' } }, { test: /\.css$/, include: path.resolve(__dirname, 'src'), //指定babel-loaders尋找的文件路徑,注意需是絕對路徑 exclude: path.resolve(__dirname, 'node_modules'), //排除node_modules文件下js,注意需是絕對路徑 use: [{ loader: 'style-loader' }, //注意先后順序,一般都要先用css-loader處理完然后用style-loader生成style標簽,但webpack讀取的順序相反 { loader: 'css-loader' } ] }, { test: /\.html$/, use: { loader: 'ejs-loader' } }, { test: /\.(jpg|png|gif|svg)$/, use:{ loader: 'file-loader?name=assets/[hash].[ext]' } } ] }, plugins: [ new htmlWebpackPlugin({ filename: 'index.html', template: 'index.html', inject: 'body', title: 'This is my plugin title.', }) ] } ~~~ 添加了[file-loader](https://www.npmjs.com/package/file-loader) **安裝** ~~~ npm install --save-dev file-loader ~~~ ### 3.ejs模板中添加圖片 ~~~javascript <div class="layer"> <%= name %> <% for (var i = 0; i < arr.length ; i++) { %> <%= arr[i] %> <% } %> </div> <img src="${require('../../assets/background.jpg')}"/> <!-- 注意這里使用es6模板語法和require --> ~~~ ### 4.成功生成,查看html ![](https://box.kancloud.cn/23ac5dee7a8c901a44f3840e45e31a18_1061x508.png) ## 圖片太小與圖片太大情況 圖片太小:可以直接將圖片用base64形式,減少向服務器的請求,借助[url-loader](https://www.npmjs.com/package/url-loader)里面limit參數進行處理。 圖片太大:需要壓縮一下,這個時候需要[img-loader](https://www.npmjs.com/package/img-loader) 這里就不做演示了,有興趣的同學可以自己根據官網介紹進行實踐嘗試。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看