《nodejs+gulp+webpack基础实战篇》课程笔记(四)-- 实战演练
一.用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基础实战篇》课程笔记(四)-- 实战演练相关推荐
- 《nodejs+gulp+webpack基础实战篇》课程笔记(六)--附加课
一.多页面分离资源引用,按需引用JS和css 我们前面实现了以下功能:1.新建了一个login模版(用到htmlWebpackPlugin).2.分别把main.js和login.js.reg.js分 ...
- iOS 实战开发课程笔记
iOS 实战开发课程笔记 本贴旨在作为对极客班 <iOS 开发实战>第五期期课程视频重新学习的笔记. 目标是建立一个比较完整的 iOS 开发知识点框架以及快速手册. 对各个内容的详细研究会 ...
- WebLogic管理与维护实战培训(企业级中间件01):基础实战篇
一.WebLogic管理与维护实战培训(企业级中间件)系列课程介绍 风哥WebLogic管理与维护实战培训专题,风哥本专题共6套课程涉及WebLogic基础实战,WebLogic运维管理,WebLog ...
- Linux Capabilities 入门教程--基础实战篇
该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 ...
- 鸟哥的linux私房菜-基础学习篇 读书笔记
从事linux工作一年多,算是能够熟练运用linux服务器,但仍觉得自己对Linux的原理,理论缺乏空洞,潜下心来认真阅读尘封的鸟哥经典,知识点很全,收获颇多,实践与知识结合,知行合一,对linux开 ...
- 鸟哥的LINUX私房菜 基础学习篇 读书笔记 -- 第零章 计算机概论 (一)
鸟哥的LINUX私房菜 基础学习篇 读书笔记 -- 第零章 计算机概论 (一) 第零章 计算机概论 0.1 电脑:辅助人脑的好工具 0.1.1 计算机硬件五大组成部分 0.1.2 一切设计的起点: C ...
- 视频教程-AI基础实战视频课程(海报书籍、多媒体设计、UI界面设计)-其他
AI基础实战视频课程(海报书籍.多媒体设计.UI界面设计) 杨老师课堂由杨亦涛主讲,他是网站工程师和UI设计讲师,10年网站开发与教学经验,上百个网站项目成功案例.精通php.JavaScript.C ...
- MySQL的初次见面礼基础实战篇
[版权申明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/61614366 出自[zejian ...
- SLAM导航机器人零基础实战系列:(四)差分底盘设计——2.stm32主控软件设计
SLAM导航机器人零基础实战系列:(四)差分底盘设计--2.stm32主控软件设计 摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买 ...
最新文章
- java array arraylist_java 基础 array arraylist..越详细越好。
- HDU 2065 红色病毒问题(生成函数)
- TCP滑动窗口(发送窗口和接受窗口)
- 堆空间跟栈空间的区分
- Nginx缓存引发的跨域惨案(转:https://www.baidu.com/home/news/data/newspage?nid=9966642810298490574n_type=0p_f)
- 各种组件的js 获取值 / js动态赋值
- 《Android进阶之光》--事件总线
- Ubuntu18.04LTS搭建nodejs环境和webStorm
- ue的 linux版本,UltraEdit Linux版RPM包 64位 V16.1.0.22
- (官方win10PE使用)微软官方win10PE取出文件操作教学
- 5步绘制软件开发流程图
- 一个标准的k-means(误差平方和版本)
- java图片蒙版,在javafx中创建图像叠加蒙版
- 计算机桌面怎么设置时钟,怎么用DesktopDigitalClock设置电脑桌面时钟
- CMM是什么?什么是 “能力成熟度模型”?
- FeignClient调用 Cannot deserialize instance of `java.lang.Boolean` out of START_OBJECT token to
- 向列表增加元素的三种方法
- VR购物兴起,难道百搭的VR技术要全面“入侵”生活了?
- 13.4.2 查询某列数据的总和
- Kubernetes的学习笔记总结之k8s集群安装部署
热门文章
- 几种存储器的主要应用
- 【❌❌N种姿势满足你遍历C++ vector⭕⭕】C++ vector 遍历
- 互斥锁、自旋锁和自适应自旋锁
- 日常生活 -- 开博二周年
- 记录一次与大神们的关于GAN应用于NLP的讨论
- 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
- java定义商品金额_老大说:谁要再用double定义商品金额,就自己收拾东西走
- linux+npm+v+报错_linux – npm install会导致像npm ERR这样的错误...
- long 比较大小_Long-Term Feature Banks
- 基于朴素贝叶斯分类器的西瓜数据集 2.0 预测分类_机器学习之朴素贝叶斯