博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTML的复用
阅读量:7219 次
发布时间:2019-06-29

本文共 2038 字,大约阅读时间需要 6 分钟。

这次我们介绍一个新的npm包来完成这项任务,会有更好的体验呢;


gulp-file-include存在的问题:

  • 非JS语法;
  • 循环、条件语句无法嵌套;

搭建环境

新建项目文件ejsDemo,初始化项目文件,本地安装gulpgulp-ejsgulp-data

项目初始化

npm init -ynpm install -D gulp gulp-ejs gulp-data

各工具包的功能:

gulp:gulp插件运行的环境;
gulp-ejs:使用ejs模板语法构建HTML的基础;
gulp-data:引入外部数据文件的工具;

创建配置文件

gulp的配置文件gulpfile.js

gulpfile

var gulp = require('gulp');var ejs = require('gulp-ejs');var data = require('gulp-data');//gulp.task定义gulp任务;gulp.task('compile-ejs',function(){//gulp.src定义入口文件的路径;//ext:'.html'生成文件的后缀名//gulp.dest定义导出文件的路径;  gulp.src('../source/**/*.ejs')  .pipe(ejs({},{},{ext:'.html'}))  .pipe(gulp.dest('../build/'));});//gulp.watch监听文件的改变,执行依赖的任务'compile-ejs';gulp.task('watch',['compile-ejs'],function(){  gulp.watch('../source/**/*.ejs',['compile-ejs']);});//default 任务默认执行;gulp.task('default',['watch'],function(){  console.log('编译成功;')})

gulp-ejs的参数讲解:

  • 第一个参数:数据对象;
  • 第二个参数:没用过;
  • 第三个参数:设置生成文件类型;

定义模板文件

分模板

在package.json的scripts语句中,定义命令行的快捷方式:

gulp --gulpfile ./config/gulpfile.js
可以在命令行中使用npm start来代替gulp --gulpfile ./config/gulpfile.js

引入内部数据

ejs数据

gulp.task('compile-ejs', function () {  gulp.src('../source/**/*.ejs')    .pipe(ejs({      title:'标题'    }, {}, { ext: '.html' }))    .pipe(gulp.dest('../build/'));});

引入外部数据

外部数据

单独的外部数据

gulp.task('compile-ejs', function () {  gulp.src('../source/**/*.ejs')    .pipe(data(function (file) {      //直接应用数据对象中的数据;      return JSON.parse(fs.readFileSync('../source/json/global.json'));    }))    .pipe(ejs({}, {}, { ext: '.html' }))    .pipe(gulp.dest('../build/'));});

多个外部数据

gulp.task('compile-ejs', function () {  gulp.src('../source/**/*.ejs')    .pipe(data(function () {      // 通过home、users对象引用数据对象;      return  {        home: JSON.parse('../source/json/home.json'),        users: JSON.parse('../source/json/users.json')      }    }))    .pipe(ejs({}, {}, { ext: '.html' }))    .pipe(gulp.dest('../build/));})

Ejs语法

引入ejs模板:

<%- include('filePath') %>

解析变量:

<%= variableName %>

JS逻辑:

<% JS逻辑 %>

JavaScript和html混合写法,示例:

//开始标识:<% arr.forEach(function(item){ %>  //中间写HTML结构  

<%= 变量名 %>

//结束标识:<% }) %>

转载地址:http://aoxym.baihongyu.com/

你可能感兴趣的文章
链接服务器创建
查看>>
用Vue的方式实现复选框
查看>>
mac下安装xampp、及其之上的组件安装
查看>>
C++内存对齐总结
查看>>
Web设计的速查卡(转)
查看>>
数据结构之哈夫曼树
查看>>
hdu1038
查看>>
CentOS 6.4下Zabbix的安装配置
查看>>
前端开发注意的问题 ,浏览器兼容性
查看>>
centos和redhat下 uwsgi配置
查看>>
Markdown 学习笔记
查看>>
vue-element-admin 多层路由问题
查看>>
Css问题 margin float 文档流 背景图底部充满
查看>>
JS match() 方法 使用
查看>>
关于shopee平台接口(php)对接示例
查看>>
BNU OJ 51000 BQG's Random String
查看>>
PAT (Advanced Level) 1044. Shopping in Mars (25)
查看>>
hdu 1531 King
查看>>
***R
查看>>
Linux 源码编译安装mysql
查看>>