webpack 的htmlwebpackplugin使用自定义模板

  htmlwebpackplugin这个插件可以用来生成静态的html文件。默认内部是通过后台来生成一个html的文件。当然也可以自己使用自己的文件来生成模板。可以支持.html文件。也可以使用其他类型的模板。例如ejs。而ejs简单方便。很适合来生成我们所需的静态文件。

htmlwebpackplugin的基本用法如下:

首先需要在webpack的配置中require进来或者用es6的import:

const HtmlWebpackPlugin = require(‘html-webpack-plugin‘);

然后在配置的plugins选项中引用插件:

new HtmlWebpackPlugin({}),

支持的选项在 这里 可以查看 ,他支持生成多个index。只需要在plugins中多次引入即可:

注意:这样引入多个还是只会生成默认的index.html.所以需要多个不同的html时。每次引入都要单独的配置,引入html作为模板很简单。只需要提供相应的属性就可以。

new HtmlWebpackPlugin({
            title:‘my first webpack‘,
            template:‘index.html‘
 })

然后是需要用ejs来生成需要的html文件,用ejs的话就需要相应的ejs-loader,否则你在ejs里面写<%=htmlwebpack.options.xx%>会报错。因为他处理不了ejs类型文件。在module里面加上对ejs类型文件的处理即可:

module: {
        rules: [
            {test:/\.ejs$/,use:[‘ejs-loader‘]},
            { test: /\.css$/, use: [‘style-loader‘, ‘css-loader‘] },
            { test: /\.(gif|png|svg|jpg)/, use: [‘file-loader‘] }
        ]
    }

然后在htmlwebpackplugin的配置里面加上如下配置:

  new HtmlWebpackPlugin({           //title
            title:‘my first webpack‘,
            //模板所在位置            template:‘index.ejs‘,           //其他任意数据
            name:‘123124‘,
            data:‘454564457‘
        })

在index.ejs里面如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title><%=htmlWebpackPlugin.options.title%></title>
</head>
<body>
    <p><%=htmlWebpackPlugin.options.name%></p>
    <p><%=htmlWebpackPlugin.options.data%></p>
</body>
</html>

使用webpack编译生成文件如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>my first webpack</title>
</head>
<body>
    <p>123124</p>
    <p>454564457</p>
<script type="text/javascript" src="app.40d7ef6bd624409cbedf.js"></script></body>
</html>
时间: 2024-08-27 00:52:24

webpack 的htmlwebpackplugin使用自定义模板的相关文章

RazorEngine在非MVC下的使用,以及使用自定义模板

---恢复内容开始--- RazorEngine模板引擎大大的帮助了我们简化字符串的拼接与方法的调用,开源之后,现在在简单的web程序,winform程序,甚至控制台程序都可以利用它来完成. 但如何在使用中调用方法和使用自定义模板呢?来看这样一个例子 1 string str="hello @Model.Name"; 2 string parse=Razor.Prase(str,new {Name="Tom"}); 3 Console.WriteLine(parse

WPF Step By Step 自定义模板

WPF Step By Step 自定义模板 回顾 上一篇,我们简单介绍了几个基本的控件,本节我们将讲解每个控件的样式的自定义和数据模板的自定义,我们会结合项目中的具体的要求和场景来分析,给出我们实现的方案和最终的运行效果. 本文大纲 1.控件模板及数据模板 2.ListBox深度定制模板. 3.TreeView高级模板使用实例. 控件模板及数据模板 控件模板 什么是控件模板,指定可以在控件的多个实例之间共享 Control 的可视结构和性能方面的方面.控件模板其实就是我们在可视方面的自定义模板

Django 自定义模板标签和过滤器

1.创建一个模板库 使用模板过滤器的时候,直接把过滤器写在app里,例如:在app里新建一个templatetags的文件夹,这个目录应当和 models.py . views.py 等处于同一层次.例如: books/     __init__.py     models.py     templatetags/     views.py 在 templatetags 中创建两个空文件:一个 __init__.py (告诉Python这是一个包含了Python代码的包)和一个用来存放你自定义的

(转)ThinkPHP自定义模板标签详解

转之--http://www.thinkphp.cn/topic/6258.html 模板标签让网站前台开发更加快速和简单,这让本该由程序猿才能完成的工作,现在只要稍懂得HTM的人也能轻易做到,这也就是模板标签的强大之处.接触过dedecms或者phpcms等内容管理系统的人都知道,cms的前台都是使用模板标签来调用数据,如列表,内容.来看一个phpcms v9调用数据排行列表的标签: 1 {pc:content action="hits" catid="6" nu

sublime text插件emmet自定义模板

首先要找到 snippets.json这个文件,路径是preferences>browse packages,看看有没有emmet目录. 如果没有,可能是您没有安装emmet插件,或者您安装了但目录里没有这个文件夹,这时候您需要手动安装,下载地址 https://github.com/sergeche/emmet-sublime,再把下载的压缩包解压到 packages文件夹下,即可 如果有请打开 snippets.json这个文件,模板就是在这个文件里定义的,您可以自定义模板了.我加了一个vu

前端学PHP之自定义模板引擎

什么是网站模板?准确地说,是指网站页面模板,即每个页面仅是一个板式,包括结构.样式和页面布局,是创建网页内容的样板,也可以理解为已有的网页框架.可以将模板中原有的内容替换成从服务器端数据库中动态内容,目的是可以保持页面风格一致 PHP是一种HTML内嵌式的在服务器端执行的脚本语言,所以大部分PHP开发出来的Web应用,初始的开发模板就是混合层的数据编程.虽然通过MVC设计模式可以把程序应用逻辑与网页呈现逻辑强制性分离,但也只是将应用程序的输入.处理和输出分开,网页呈现逻辑(视图)还会有HTML代

SublimeText插件Emmet的自定义模板

在前端界,作为快速生成代码的Emmet插件相当给力.最近在学bootstrap,需要频繁生成html头文件,我就想着自定义模板.国内只有基础教程,只好自己读英文文档了. Emmet国内基础教程地址: http://www.w3cplus.com/tools/emmet-cheat-sheet.html http://blog.wpjam.com/m/emmet/ 读了一些发现一个解决方案,原文是自定义emmet模板. 工具栏打开Preferences -> Package Settings ->

关于Xcode6 的自定义模板位置

自定义模板放置位置: Xode6 -> 打开App 后,?/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File 下

vim中如何引用自定义模板文件

我们在使用vim新建文件时可以引用自定义模板,来避免重复的数据格式处理花费太多时间. 实现方法很简单,只需要2步即可:1. 在.vim/template目录放入自己的模板文件(如shellconfig.sh. pythonconfig.py),内容可如图所示: 2. 在vim的.vimrc配置中加入对应该的模板文件引用,如下: autocmd BufNewFile *.sh 0r ~/.vim/template/shellconfig.sh autocmd BufNewFile *.py 0r