一.用gulp 构建前端页面(1)---静态构建

npm install gulp-template --save-dev 

  通过这个插件,我们可以像写后台模板(譬如PHP)一样写前端页面。我们首先学习一下写法.

  现在我们创建一个新任务:创建一个裸的index.html文件,然后在body里面写上 ,我的年龄是:<%= age %>

  下载好gulp-template,我们引用并配置

var gulp_tpl = require("gulp-template");
gp.task("page",function(){gp.src(['index.html']).pipe(gulp_tpl({age:"18"})).pipe(gp.dest('./build/html'));
})

   在index.html文件中,我们写上下面这句话

<h1>大家好,我的年龄<%=  age %></h1>

  然后我们  

  看看build文件夹下面是不是生成了一个html文件夹里面是不是有一个index.html文件?


二、用gulp像CMS那样生成新闻页面

  我们使用了gulp-template这个插件。通过写入静态数据生成了一个 HTML文件。先准备一下,学习一个NodeJS库:

 npm install request --save-dev//有了这个库,我们可以在NodeJS里面方便的实现类似curl功能。(好比是模拟浏览器请求外部的网址<你可以想象成API>)

  我们先写一个简单的PHP文件测试一下request组件:

<?php$news= newstdClass();$news-> id = "1024";$news->title = "测试用PHP文件";$news-> content = "你是我这一生唯一的遗憾,这只是一个测试用PHP文件,请不要太在意内容";exit(json_encode($news));?>

  然后在项目目录的xiaozu.js中引用request插件并测试

var req = require("request");
req.get("http://127.0.0.1:999/stuDir/news.php",function(err,response,body){if(!err && response.statusCode ==200){console.log(body);}
})

  

  OK,一切正常,我们开始正式写代码,把前面的引用封装进我们自己的类库中,改造一下我们之前写的slib,正规的写上文件名index.js。

  我们永远要记住CommonJS的规则之一 :1、外部文件引用用require 2、文件(模块)导出方法或变量 用exports.xxxx=function(){…} 或者module.exports=function(){…}

//slib/index.jsvar req = require("request");
exports.loadNews= function(doSomething){req.get("http://127.0.0.1:999/stuDir/news.php",function(err,response,body){if(!err && response.statusCode ==200){doSomething(body);//回调
}})
}

//gulpfile中写入
var gulp_tpl = require("gulp-template");
gp.task("news",function(){var _slib = require("slib");_slib.loadNews(function(body){gp.src(['index.html']).pipe(gulp_tpl(JSON.parse(body))).pipe(gp.dest('./build/html'));});


三、用gulp+EJS像CMS那样生成完整新闻内容面

  我们还是先做一个准备工作,去http://www.embeddedjs.com/

npm install ejs --save-dev 

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

  我们来来测试、使用一下。

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

<ul><% for(var i in list){ %><li><%= list[i].name %></li><% } %>
</ul>
//<% 这里面的内容就是js脚本写法%>//<%= 碰到”=“ 就是输出%>

  然后在xiaozu.js这个文件中利用FS模块读取这个文件,并且渲染模版,利用node

var fs=require('fs');var str = fs.readFileSync("./ejs.html","utf8");var ejs = require("ejs");var data={list:[{name:"xiaozu"},{name:"tiger"},{name:"biubiu"}]
}var html =ejs.render(str,data);
console.log(html);

  

  OK,这就是使用EJS使用、测试。下面回到gulp,结合gulp

npm install gulp-ejs --save-dev//gulp已经很贴心的帮我们准备好了插件

  现在我们在gulpfile文件中写个新的news2

var gulp_ejs = require("gulp-ejs");
gp.task("news2",function(){var data={title:"hello tiger",list:[{name:"xiaozu"},{name:"tiger"},{name:"biubiu"}]}gp.src(['ejs.html']).pipe(gulp_ejs(data)).pipe(gp.dest('./build/html'));
})

  还是node运行,我们看到build文件夹中生成了一个同名文件ejs.html,内容如下

   

  版权声明:笔记整理者亡命小卒热爱自由,崇尚分享。但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的《前端开发速学成财(nodejs+gulp+webpack基础实战篇)。本学习笔记小卒于博客园首发, 如需转载请尊重老师劳动,保留沈逸老师署名以及课程来源地址 .

  上一课:《nodejs+gulp+webpack基础实战篇》课程笔记(三)--webpack篇

   下一课:《nodejs+gulp+webpack基础实战篇》课程笔记(五)-- 实战演练,构建用户登录

转载于:https://www.cnblogs.com/xz1024/p/5857340.html

《nodejs+gulp+webpack基础实战篇》课程笔记(四)-- 实战演练相关推荐

  1. 《nodejs+gulp+webpack基础实战篇》课程笔记(六)--附加课

    一.多页面分离资源引用,按需引用JS和css 我们前面实现了以下功能:1.新建了一个login模版(用到htmlWebpackPlugin).2.分别把main.js和login.js.reg.js分 ...

  2. iOS 实战开发课程笔记

    iOS 实战开发课程笔记 本贴旨在作为对极客班 <iOS 开发实战>第五期期课程视频重新学习的笔记. 目标是建立一个比较完整的 iOS 开发知识点框架以及快速手册. 对各个内容的详细研究会 ...

  3. WebLogic管理与维护实战培训(企业级中间件01):基础实战篇

    一.WebLogic管理与维护实战培训(企业级中间件)系列课程介绍 风哥WebLogic管理与维护实战培训专题,风哥本专题共6套课程涉及WebLogic基础实战,WebLogic运维管理,WebLog ...

  4. Linux Capabilities 入门教程--基础实战篇

    该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 ...

  5. 鸟哥的linux私房菜-基础学习篇 读书笔记

    从事linux工作一年多,算是能够熟练运用linux服务器,但仍觉得自己对Linux的原理,理论缺乏空洞,潜下心来认真阅读尘封的鸟哥经典,知识点很全,收获颇多,实践与知识结合,知行合一,对linux开 ...

  6. 鸟哥的LINUX私房菜 基础学习篇 读书笔记 -- 第零章 计算机概论 (一)

    鸟哥的LINUX私房菜 基础学习篇 读书笔记 -- 第零章 计算机概论 (一) 第零章 计算机概论 0.1 电脑:辅助人脑的好工具 0.1.1 计算机硬件五大组成部分 0.1.2 一切设计的起点: C ...

  7. 视频教程-AI基础实战视频课程(海报书籍、多媒体设计、UI界面设计)-其他

    AI基础实战视频课程(海报书籍.多媒体设计.UI界面设计) 杨老师课堂由杨亦涛主讲,他是网站工程师和UI设计讲师,10年网站开发与教学经验,上百个网站项目成功案例.精通php.JavaScript.C ...

  8. MySQL的初次见面礼基础实战篇

    [版权申明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/61614366 出自[zejian ...

  9. SLAM导航机器人零基础实战系列:(四)差分底盘设计——2.stm32主控软件设计

    SLAM导航机器人零基础实战系列:(四)差分底盘设计--2.stm32主控软件设计 摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买 ...

最新文章

  1. java array arraylist_java 基础 array arraylist..越详细越好。
  2. HDU 2065 红色病毒问题(生成函数)
  3. TCP滑动窗口(发送窗口和接受窗口)
  4. 堆空间跟栈空间的区分
  5. Nginx缓存引发的跨域惨案(转:https://www.baidu.com/home/news/data/newspage?nid=9966642810298490574n_type=0p_f)
  6. 各种组件的js 获取值 / js动态赋值
  7. 《Android进阶之光》--事件总线
  8. Ubuntu18.04LTS搭建nodejs环境和webStorm
  9. ue的 linux版本,UltraEdit Linux版RPM包 64位 V16.1.0.22
  10. (官方win10PE使用)微软官方win10PE取出文件操作教学
  11. 5步绘制软件开发流程图
  12. 一个标准的k-means(误差平方和版本)
  13. java图片蒙版,在javafx中创建图像叠加蒙版
  14. 计算机桌面怎么设置时钟,怎么用DesktopDigitalClock设置电脑桌面时钟
  15. CMM是什么?什么是 “能力成熟度模型”?
  16. FeignClient调用 Cannot deserialize instance of `java.lang.Boolean` out of START_OBJECT token to
  17. 向列表增加元素的三种方法
  18. VR购物兴起,难道百搭的VR技术要全面“入侵”生活了?
  19. 13.4.2 查询某列数据的总和
  20. Kubernetes的学习笔记总结之k8s集群安装部署

热门文章

  1. 几种存储器的主要应用
  2. 【❌❌N种姿势满足你遍历C++ vector⭕⭕】C++ vector 遍历
  3. 互斥锁、自旋锁和自适应自旋锁
  4. 日常生活 -- 开博二周年
  5. 记录一次与大神们的关于GAN应用于NLP的讨论
  6. 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
  7. java定义商品金额_老大说:谁要再用double定义商品金额,就自己收拾东西走
  8. linux+npm+v+报错_linux – npm install会导致像npm ERR这样的错误...
  9. long 比较大小_Long-Term Feature Banks
  10. 基于朴素贝叶斯分类器的西瓜数据集 2.0 预测分类_机器学习之朴素贝叶斯