一,构建前端页面初步

上一节,利用gulp-webpack插件,把我们安装的gulp和webpack结合到了一起,并实现了js的编译到压缩一步搞定,问题来了,前端开发总不能只写JS吧,如果我要开发html页面有啥知识点呢?
1,安装:Gulp**模板插件
npminstall gulp-template —save-dev
通过这个插件,我们可以像写后台模板(譬如PHP)一样写前端页面。我们首先学习一下写法
2,创建一个新任务
然后创建一个裸的index.html文件
然后在body里面写上
我的年龄是:<%= age %>
(这是不是很像asp?很像php?)
接下来的问题是,这个变量怎么赋值
3,任务代码如下**

  1. gp.src(['index.html']) // 读取
  2. .pipe(gulp_tpl({
  3. "age":18
  4. }))
  5. .pipe(gp.dest('./build/html')); // 存到 build

这就是最简单的模板插件使用方法

4,这些模板数据从哪来?
难道我都写在gulpfile.js里面?静态的写?逗我呢?

二,使用gulp生成一个新闻页面

1,先学习一个NodeJS库
npm install request —save-dev
有了这个库,我们可以在NodeJS里面方便的实现类似curl功能。(好比是模拟浏览器请求外部的网址<你可以想象成API>)
以下是php参考的写法,供借鉴:
,**通过PHP,随意的创建一个输出JSON格式的网址**
大家可以用自己希望的代码写(随意点)
$news=new stdClass();
$news->id=123;
$news->title=”今天气温达到了100度”;
$news->content=”猪一样的天气这么热,万一我和你妈同时掉水里,请先救你妈,我要在水里待会,能听懂?”;
exit(json_encode($news));

,**测试**request
var req=require(“request”);
req.get(“http://localhost:9090/news.php",function(err,response,body){
if(!err && response.statusCode==200)
{
doSomething(body);
}
})
是不是很类似我们的Ajax?

2,接下来我们就要开始写代码
•改造一下我们之前写的slib,正规的写上文件名index.js

  1. var req=require("request");
  2. exports.loadNews=function(doSomething){
  3. // 模拟
  4. /* doSomething({
  5. "data":
  6. { "age":18,
  7. "content":"内容"}
  8. }); */
  9. // 接口请求
  10. req.get("http://10.5.5.119:8089/base/getSysDict?dictTypeCode=GENDER",function(err,response,body){
  11. if(!err && response.statusCode==200)
  12. {
  13. doSomething(body);
  14. }
  15. })
  16. }

5,JS在node里使用

// 生成cms页面
var gulp_tpl=require("gulp-template");
gp.task('news',done=>{ 
   var _slib=require('mySlib')
 // console.log(_slib);
     _slib.loadNews(function(body){

     gp.src(['index.html'])    // 读取
     .pipe(gulp_tpl( body.data))
   // .pipe(gulp_tpl( JSON.parse(body.data)))    
    .pipe(gp.dest('./build/html'));   // 存到 build  

  })     
  done()

})

NODEJS的内置JSON对象
1、parse(xxx)可以把json字符串转化为对象并返回
2、stringify(xxx)把对象转化为字符串 并返回

三,我们还要用到一个rename插件

•npm install gulp-rename —save-dev
image.png
image.png
image.png
gulp news 运行

四,使用ejs模板引擎

安装:npm install ejs —save-dev

http://www.embeddedjs.com/
这是一个功能很经典且使用非常简单的JS模板引擎。如果你用过NODEJS开发后端,那么EJS应该有所了解。但是我们的课程是前端,因此单独剥离使用

测试一下

•随随便便的创建一个文件,叫做esj.html


    <% for(var i in list){ %>
  • <%= list[i].name%>

  • <% } %>

<% 这里面的内容就是js脚本写法%>
<%= 碰到”=“ 就是输出%>
我们暂时记住这2条就够了

利用FS模块读取这个文件

•var fs=require(“fs”);
•var str=fs.readFileSync(“./ejs.html”,‘utf8’); //同步读取,方便理解

•然后手工创建一个数据源

•var data={
• list:[
• {name:“shenyi”} ,
• {name:”fwefwef”}
• ]
•}

渲染模板

•var ejs=require(“ejs”);

•var html=ejs.render(str,data);
•console.log(html)


•利用nodejs去运行,立马可以得到结果

结合我们的gulp

npm install gulp-ejs —save-dev
gulp已经很贴心的帮我们准备好了插件,使用gulp_ejs代替gulp-template

var gulp_ejs=require(“gulp-ejs”);
gp.task(“news2”,function(){
var data={
list:[
{text:”shenfe”} ,
{text:”fwefwef”}
]
}
gp.src([‘ejs.html’])
.pipe(gulp_ejs(data))
.pipe(gp.dest(‘./build/html’));
})