• 《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 = 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基础实战篇》课程笔记(五)-- 实战演练,构建用户登录

  • 相关阅读:
    React篇-子组件调用父组件方法,并传值
    RN-ios模拟器上调出中文输入法
    mac-破解2018 webstorm
    React篇-滚动条下移的触发在react的生命周期分析
    javascript篇-typeof,instanceof,constructor,toString判断数据类型的用法和区别
    javascript篇-slice(),splice(),split(),substring(),substr()的用法以及区别
    javascript篇-console.log()打印object却显示为字符串[object object]
    Linux的几种关机命令
    深入浅出Oracle:DBA入门、进阶与诊断案例 PDF 下载
    SQL state [72000]; error code [1461]; ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值 ; nested exception is java.sql.BatchUpdateException: ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
  • 原文地址:https://www.cnblogs.com/xz1024/p/5857340.html
Copyright © 2020-2023  润新知