0.0.0 • Published 8 years ago

EventtownProject v0.0.0

Weekly downloads
87
License
-
Repository
-
Last release
8 years ago

company_user_manage_center 公司企业管理中心(个人,企业中心)

- 前端构建部分

会唐网目前项目的开发环境为PHP,前后端混杂模式开发,过多的依赖php环境,前后端开发效率不高。前端页面资源不好管理,因此打算分离出来,使用nodeJs及其模块来实现前端自动化构建。 其中使用ejs来实现模板继承、使用pm2来后台管理执行node服务、使用BrowserSync 来自动刷新,使用gulp来打包压缩资源 目前主要解决了以下问题:

  1. 网页公共部抽离 普通HTML无法抽离头、尾等HTML碎片。为模块的维护带来极大的不便,这里使用express(nodeJs框架)+ ejs模板引擎(其语法和HTML语法一致,无需学习成本)实现了 include 和 layout等功能。 和php语法一致 。

如引入头部:

<% include ../inc/header.html %>

那么一个完整的html页面代码看起来是这样的:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>大企业-订单列表</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="/css/ht-framework.css" rel="stylesheet">
</head>

<body>
    <% include ../inc/inc.ucenter.header.html %>
    <div class="u_main clearfix">
    <% include ../inc/inc.ucenter.sidebar.html %>
        <div class="u_content">
          <!--内容区-->
        </div>
    </div>
    <% include ../inc/inc.ucenter.footer.html %>
    <script type="text/javascript">
    //custom js
    </script>
</body>
</html>

同时所有的css js image等静态资料的路径全部默认指向了 wwwroot/下。

<link href="/css/ht-framework.css" rel="stylesheet"> //全部相对于wwwroot根目录 同实际环境保持一致
  1. 模拟真实的ajax请求,前后端同步开发,最后联调接口
    通过express的route功能,前端可以自定义ajax请求url及响应内容。 如定义一个 /testurl 的get请求接口:
//routes/user.js

var mydata={
    errorno:0,
    msg:"请求成功",
    data:[1,2,3,4,5,6,7]
  }

router.get('/testurl', function(req, res, next) {
//发送自己定义的json串
  res.json(myata);
});

然后就可以在页面中使用了:

$.getJSON('/testurl',function(data){
  console.log(data) // 输出: Object {errorno: 0, msg: "请求成功", data: Array[7]}
})

如果想模拟动态的假数据,可以使用mockJs来尽可能还原真实的数据。暂时先不加。看后期需要情况再定。

  1. 自动刷新、多设备同步

“自动刷新”并不是新的概念,但对关注“可见”的预览效果的前端开发者来说,它非常好用,可以节约很多时间。 试想开着两个显示器,一个手机、一个pad。你在IDE里新写了一小段代码,按下了ctrl+s保存。紧接着另一个显示器、手机和PAD的应用,就即时变成了更新后的效果,多么的酷。

这里选择了集成BrowserSync,因为它不需要浏览器插件,也不用手工添加代码。一句控制台的命令之后,无论是在手机里还是电脑,无论用多少个浏览器(经测试,IE8+及其它),都可以拥有自动刷新的功能。

它使用了服务器的形式(直接或代理)来处理项目文件。默认情况下,访问它的服务器上的网页,可以看到这样的提示签: "Connected to BrowserSync"这说明当前浏览的网页已连接到BrowserSync。查看一下源码,会发现它们都被添加了与BrowserSync有关的一段script 代码,就像LiveReload浏览器插件做的那样。这些代码会在浏览器和BrowserSync的服务器之间建立web socket连接,一旦有监听的文件发生变化,BrowserSync会通知浏览器。 如果发生变化的文件是css,js ,BrowserSync不会刷新整页,而是直接重新请求这个css或js文件,并更新到当前页中,感觉不到页面的刷新。总之速度就是快。同时也可以为测试同时测试多个设备提供便利。

  1. 性能优化 自动js css image 压缩合并

使用gulp及其插件,实现自动压缩文件,及js加密。减少线上静态资源文件的体积。详情配置见 gulpfile.js。 学习gulp工具 下面是用到的三个插件:

"gulp-clean-css": "^2.0.7",
"gulp-imagemin": "^3.0.1",
"gulp-uglify": "^1.5.3"

其它待添加

  • 使用less或sass书写样式文件,使用es6或Typescript书写JavaScript,自动编译。
  • 文件指纹 自动为文件名添加 MD5 戳。保证模块上线后不受缓存的影响。
  • 自动提交到git版本库 ,发布到CDN, 解放双手 。

如何使用

  • 安装nodeJs https://nodejs.org

  • 通过git clone 复制项目代码到本地

  • 在项目目录执行命令,安装依赖:

  • 全局安装gulp cli

$ npm install --global gulp-cli
  • 全局安装pm2 用来管理node进程
$ npm install pm2 -g 
  • 根据packeage.json 安装依赖
$ npm install
  • 开始工作
$ npm start

执行后启动nodejs服务,启动自动刷新监控,并打开chrome浏览器,访问项目根目录 http://localhost:3001

html_views 为静态html页面目录

dev_webroot 为js css image源码目录

开发完毕后执行

npm run build

会对dev_webroot目录里的js css images 文件夹 压缩,并生成到 webroot目录 供线上使用

详情配置见 gulpfile.js

PHP后台同学可以直接从html_views 目录 拿到已经拆分了头尾的html页面。部署到php的views视图目录即可。

开发机上的预览地址:http://192.168.100.17:3000