博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《nodejs+gulp+webpack基础实战篇》课程笔记(五)-- 实战演练,构建用户登录
阅读量:5049 次
发布时间:2019-06-12

本文共 6636 字,大约阅读时间需要 22 分钟。

一、用gulp +webpack构建登录页面(1):简单构建

  我们做项目经常要做的“百搭”页面 登录页面 ,它的基本要素如下: 1、页面展示要素 2、基本脚本判断 3、后端交互。

  在项目根目录下创建 src(有逼格的名称) --tpl (代表是模板) --login.html(后缀随意) 注意,一旦发布到生产环境, 以上文件是不需要上传到服务器上的。 <!--src/tpl/login.html-->

    
登录测试页面

用户登录

用户名
密码
 
var cmdLogin = document.getElementById("cmdLogin");cmdLogin.onclick = function(){    alert("登录测试")}//src/main.js创建一个主文件
 

  这里,我们只是演示如何用webpack编译,所以代码简单且LOW,好下面,开始测试用webpack编译。

//先到webpack.config.js中确认我们的入口文件module.exports={    entry:[                     //entry是入口文件,可以多个,代表要编译哪些JS        './src/mian.js'    ],    output:{        path: __dirname+'/build/js',      //输出文件夹        filename: 'build.js'    //最终打包生成的文件名    }}

  在项目根目录下执行命令:webpack 一切编译好了

  下面开始结合gulp,这节课我们做简单点 1、利用我们之前学习的gulp-webpack把JS编译。2、利用 gulp把 tpl下面的文件生成到build/html里面去。

//在gulpfile重新写入两个task任务//生成JS文件   gp.task("build-js",function(){       gulp_webpack(webpack_config,webpack)           .pipe(gp.dest('./build/js'))   })//最终生成gp.task("run",['build-js'],function(){    gp.src(['./src/tpl/*.html'])        .pipe(gp.dest('./build/html'))})

   运行:

  

  OK ,我们在build文件夹中,分别在html和JS文件下生成了login.html和build.js文件,在浏览器中运行login.html文件,我们就能看到生成后的效果.


 二、用gulp+webpack构建用户登录(2):简化

   老规矩,这节需要使用到webpack一个插件,我们先安装

npm install html-webpack-plugin --save-dev

  先用一个简单的方式演示下这个插件的使用:

var HtmlWebpackPlugin = require('html-webpack-plugin');//万事先引用module.exports={    entry:[                     //entry是入口文件,可以多个,代表要编译哪些JS        './src/mian.js'    ],    output:{        path: __dirname+'/build/js',      //输出文件夹        filename: 'build.js'    //最终打包生成的文件名    },    plugins:[        new HtmlWebpackPlugin({            filename: __dirname + '/build/html/login_build.html',            template: __dirname + '/src/tpl/login.html',            inject:"body",  //在head中引用就写head            hash:true              }) //初始化这个对象    ]}

  OK,在node中运行webpack,我们得到和上一节课一样的结果。

  回到gulp中,

//生成JS文件gp.task("build-js",function(){    gulp_webpack(webpack_config)        .pipe(gp.dest('./build/js'))})//最终生成gp.task("run",function(){    webpack(webpack_config,function(err,status){        //这里需要些gulp处理过程    })    /*     gp.src(['./src/tpl/!*.html'])     .pipe(gp.dest('./build/html'))*/})

  node中继续运用gulp run,结果还是一样


三、用gulp +webpack构建登录页面(3):在页面中使用jquery

  还是先做个准备工作,下载指定版本的jquery。

npm install jquery@1.11.0 --save-dev

  如果把所有代码都写在main.js里明显不合适。于是我们要开始分文件。 1、先把main.js留空,后面我们再用 2、创建一个 login.js专门做登录相关 3 、创建一个reg.js专门做注册相关。

  

  修改webpack配置文件,并且引入我们开始下载的jquery,下面标红的的代码就是我们这里写入的新代码。

var HtmlWebpackPlugin = require('html-webpack-plugin');//万事先引用var webpack = require("webpack");module.exports={    entry: [    //entry 是入口文件,可以多个,代表要编译那些js        './src/main.js',        './src/login.js',        './src/reg.js',    ],    output:{        path: __dirname+'/build/js',      //输出文件夹        filename: 'build.js'    //最终打包生成的文件名    },    plugins:[        new HtmlWebpackPlugin({            filename: __dirname + '/build/html/login_build.html',            template: __dirname + '/src/tpl/login.html',            inject:"body"        }), //初始化这个对象        new webpack.ProvidePlugin({            $:'jquery'  //这里请确保你的jquery已经安装了。否则要路径引用哦        })    ]}
//src/login.js$("#cmdLogin").click(function(){    alert('登录')})
//src/reg.js$("#cmdReg").click(function(){    alert('注册');})

  node中运行webpack,我们到build文件夹起看看生成的结果...


四、用gulp +webpack构建登录页面(4):把我们的业务模块分开打包

  事实上我们并不需要把所有业务都合并到一个JS文件(后面会越来越大), 就要用到webpack的拆分插件.

  第一步:修改entry,设置多节点:

/*entry: [    //entry 是入口文件,可以多个,代表要编译那些js        './src/main.js',        './src/login.js',        './src/reg.js',    ],*/    entry:{ //多节点设置        "main":'./src/main.js',        "user":['./src/login.js','./src/reg.js']    },

  第二步:用到webpack的拆分插件

new webpack.optimize.CommonsChunkPlugin({            name:"user",            //entry定义的节点名            filename:"user.js"       //最终要生成到文件名        })

  事实上,jquery这样的库,我们生产环境肯定要使用CDN地( 哪怕是本地的压缩文件),而不会和我们的业务模块打包到一起。

  譬如国内的 CDN地址 http://cdn.bootcss.com/jquery/1.12.4/jquery.js,在webpack配置中设置:  

//在tpl中的login引用:http://cdn.bootcss.com/jquery/1.12.4/jquery.js  //webpack.config.js中引入下面内容   externals: {        ‘jquery’: ‘jQuery’   //或者 ‘jquery’:’$’    },

五、构建登录页面(5):样式处理初步

  下面需要写一些样式,先在Src文件夹下创建一个子文件夹叫css。

  新建main.css 内容如下(超级简单): #cmdLogin{color:red} #cmdReg{color:green}。

  这里还需要用到两个插件,我们先下载下来

npm install style-loader --save-devnpm install css-loader --save-dev

  Webpack的loader是重要特性之一: 用于转换应用程序的资源文件, 告诉webpack怎样加载一个资源文件。在webpack.config.js中增加下列代码

  在main.js中记得加载  require('./css/main.css');

//加载css    module:{        loaders:[   //设置加载器            {test:/\.css$/,loader:"style!css"} // test属性是一个正则,loader属性知名加载器,!是连接符        ]    },

  OK,再次NODE运行,我们去看看结果。

 


六、用gulp +webpack构建登录页面(6):样式单提取

   如果我们并不需要打包到脚本中去呢?往往一个“互联网”项目会涉及到很多样式文件。 譬如全局有个总样式文件----譬如叫main.css ,单独的模块有单独的样式文件--譬如叫user.css, 按需加载才是我们要想要的,否则带宽压力、客户等待等会造成项目的体验很差。

  还是先下一个插件:

npm install extract-text-webpack-plugin --save-dev//官方示例和说明:https://github.com/webpack/extract-text-webpack-plugin

 

  OK,现在我们还是在webpack.config.js中引用并设置,红色标志部分是我们引用的地方,下面给出现在webpack.config.js的全部内容

var HtmlWebpackPlugin = require('html-webpack-plugin');//万事先引用var webpack = require("webpack");var ExtractTextPlugin = require("extract-text-webpack-plugin"); //初始化module.exports={    /*entry: [    //entry 是入口文件,可以多个,代表要编译那些js        './src/main.js',        './src/login.js',        './src/reg.js',    ],*/    entry:{ //多节点设置        "main":'./src/main.js',        "user":['./src/login.js','./src/reg.js']    },    output:{        path: __dirname+'/build/js',      //输出文件夹        filename: 'build.js'    //最终打包生成的文件名    },    externals: {    'jquery': 'jQuery'   //或者 ‘jquery’:’$’    },    //加载css    module:{        loaders:[   //设置加载器            //{test:/\.css$/},loader:"style!css"}            {test:/\.css$/,loader:ExtractTextPlugin.extract("style","css")} // test属性是一个正则,loader属性知名加载器,!是连接符        ]    },plugins:[        new HtmlWebpackPlugin({            filename: __dirname + '/build/html/login_build.html',            template: __dirname + '/src/tpl/login.html',            inject:"body"        }), //初始化这个对象        new webpack.ProvidePlugin({            $:'jquery'  //这里请确保你的jquery已经安装了。否则要路径引用哦        }),        new webpack.optimize.CommonsChunkPlugin({            name:"user",            //entry定义的节点名            filename:"user.js"       //最终要生成到文件名        }),        new ExtractTextPlugin("[name].css") //根据我们自己的文件名来生成]}

  OK ,我们还是在NODE中生成,然后看看结果。

版权声明:笔记整理者亡命小卒热爱自由,崇尚分享。但是本笔记源自。本学习笔记小卒于博客园首发, 如需转载请尊重老师劳动,保留沈逸老师署名以及课程来源地址 .

上一节

下一课:

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

你可能感兴趣的文章
bzoj4012:[HNOI2015]开店
查看>>
python 学习笔记一
查看>>
在vue-cli项目中使用echarts
查看>>
函数connect
查看>>
window.location.href 和 window.location.replace 的区别
查看>>
PPM格式解析
查看>>
asp.net网站前台显示当前日期的js代码
查看>>
在.net中为什么第一次执行会慢?
查看>>
spring事务详解
查看>>
B-树和B+树的应用
查看>>
杭电2044
查看>>
java.lang.IllegalArgumentException: argument type mismatch
查看>>
Python 配置文件 ConfigParser 模块
查看>>
单片机结构体内存的分配
查看>>
如何修复“网络路径”,错误代码0x80070035
查看>>
3.结构变量成员的表示方法
查看>>
只能打开一个实例
查看>>
数组的map方法
查看>>
python的一些基础知识
查看>>
Android Studio导入第三方类库的方法(转)
查看>>