《nodejs+gulp+webpack基础实战篇》课程笔记(四)-- 实战演练_weixin_30510153的博客-程序员秘密

技术标签: ViewUI  webpack  前端  php  

一.用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 = new stdClass();
    $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.js

var 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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30510153/article/details/98352585

智能推荐

博士申请 | 香港中文大学(深圳)纪冬旭老师招收博士生/研究助理/博士后_PaperWeekly的博客-程序员秘密

合适的工作难找?最新的招聘信息也不知道?AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职!香港中文大学(深圳)香港中文大学(深圳)是一所经国家教育部批准,按...

mac中安装nvm、npm和node_API-Lily的博客-程序员秘密

一、nvm的安装介绍nvmnvm(Node.js Version Manager)也就是 Node.js 的包管理器,可以通过它方便安装和切换不同的Node.js版本。安装nvm去github上https://github.com/nvm-sh/nvm查看安装语法如:通过 curl 安装:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash如果报错:【“curl: (7) Faile

python--连接oracle数据库_python连接oracle数据库_晚风吹儿的博客-程序员秘密

在使用python连接时,需要注意以下点:1、需要下载已安装的oracle数据库对应的版本2、需要下载与python版本对应的oracle包3、需要把oracle版本的ddl文件放置python安装根目录下。

备战数学建模1-MATLAB矩阵相关_矩阵相关matlab_nuist__NJUPT的博客-程序员秘密

1-MATLAB的数值数据(1)整型整型分为有符号整型号和无符号整型。有符号的8位整型范围:-128~127无符号的8位整型的范围:0~255(2)浮点型浮点型分为单精度浮点型(4个字节)和双精度浮点型(8个字节),双精度精度更高。可以使用single函数和double函数将数值类型分别转换成单精度型和双精度型。(3)复数型...

3-知识图谱构建-知识图谱-自然语言处理_大奸猫的博客-程序员秘密

来源:《中文信息处理报告》定义根据特定知识表示模型,从分布异构的海量互联网资源中采用机器学习和信息抽取等技术,建立大规模知识图谱的过程。知识图谱构建的数据源是什么?这种数据源存在什么问题?对应的处理技术是什么?技术处理后,要达到的效果是什么?大规模知识库VS语义集成数据源:互联网上已有许多大规模知识库,比较著名的有 DBPedia、YAGO,wikipedia等。存在问题:知识库之间的异构性,对知...

如何查看知道某一个网站是由哪种编程语言写的?绝对准确全面!(精)_xhhayward的博客-程序员秘密

一般的情况看页面的后缀名Server Side Includes 技术,拓展名为.shtml或.html或.htm PHP技术,拓展名为.php JSP技术,拓展名为.jsp或.jsf(JSF技术是JSP技术的拓展) ASP.NET技术,拓展名为.aspx (x 代表extension) ASP技术,拓展名为.asp ColdFusion技术,拓展名为.cfc好点的

随便推点

Real-Time High-Resolution Background Matting阅读笔记_M-A-D的博客-程序员秘密

一、贡献实现了一种实时、高分辨率的背景替换技术,在GPU上,4K分辨率下能以30帧/秒的速度运行, 在1920*1080的分辨率下能以60帧/秒的速度运行; 提出采用两个CNN来实现丝滑效果,一个基础网络Gbase计算低分辨率结果; 优化网络Grefine根据之前的网络预测对高分辨率图像所选择的图片块进一步处理;这种只细化了高分辨率下容易出错的区域,从而减少了冗余计算的方法,使实时高分辨率抠图成为可能。 发布了两个新的大型抠图数据集(视频和图像各一个):VideoMatte240K 和 PhotoM

解决spring boot项目中链接多出jsessionid的问题_weixin_34392435的博客-程序员秘密

在HTML中用&lt;input id="urlcontext" type="hidden" th:value="@{/}" /&gt; 时会发现得到的链接会是 " /项目名/;jsessionid=xxxxxxxxxxxxxxxxxxxx" 这样的形式,这样再去拼接链接访问就会报错。  在启动类上继承 SpringBootServletInitializer 类,然后重写...

计算机科学与技术实训内容,计算机科学与技术专业实训大纲.doc_liansang99的博客-程序员秘密

计算机科学与技术专业实训大纲海口经济学院附属中等专业学校《计算机操作技能》实训大纲实训指导书名称:《计算机基础实验指导书》实训学时:1周,学分:1应开实训学期:第一学期适用专业:计算机科学与技术先修课程:计算机导论一、实训目的与要求在学习计算机系统基本概念以后,让学生通过上机实训,了解计算机系统的基本组成、功能,增加对计算机系统的感性认识。培养学生熟练操作计算机的技能,对Windows桌面、窗口的...

【2023王道数据结构】【线性表—page40—14】C、C++完整实现(可直接运行)_海洋.之心的博客-程序员秘密

~~~笔锋至此又怎能平淡而终,故事开始便不承认普通如果需要完整代码可以关注下方公众号,后台回复“代码”即可获取,阿光期待着您的光临~题目:设A和B是两个单链表(带头节点),其中元素递增有序,设计一个算法从A和B中的公共元素产生单链表C,要求不破坏A、B的结点。解题思路:&gt;类似于归并排序&gt;将相等结点插入LC代码实现:#include &lt;iostream&gt;using namespace std;typedef struct LNode{ .

相位提取算法简介(Phase Retrieval/PR)(待更新)_BubbleCodes的博客-程序员秘密

文章目录前言Gerchberg-Saxton AlgorithmFienup AlgorithmWirtinger Flow AlgorithmDouble Phase Coding AlgorithmDouble Phase Amplitude Algorithm存在的疑惑:使用ASM实现ITFA,是否在物理实现是还需要加上傅里叶透镜?使用基于FFT2实现的ITFA,在使用FFT2时,重建效果好,但是不适用于近场,使用最基本的ASM时,重建效果也很好,但是不适用于远场,使用线性卷积时,效果不好,有振荡

推荐文章

热门文章

相关标签