From 43f685e3f2928feea15d32b3ac540c42f4ef0da3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=BE=E8=89=B3=E7=8E=B2?= <939184663@qq.com> Date: Sun, 4 Sep 2016 15:46:11 +0800 Subject: [PATCH] v2.0.13 --- README.md | 117 ++++++++++++------ index.js | 1 - package.json | 2 +- src/generator-olo/app/index.js | 1 - src/generator-olo/seo-php/app/index.js | 1 + .../seo-php/app/templates/_config.json | 8 +- .../seo-php/app/templates/fis-conf.js | 5 +- .../seo-php/app/templates/gitignore | 4 + .../seo-php/app/templates/libs/common.js | 40 ++++++ src/generator-olo/seo-php/c/index.js | 1 - .../seo-php/view/templates/_index.handlebars | 4 +- .../seo/app/templates/_config.json | 6 +- .../seo/app/templates/libs/common.js | 2 +- 13 files changed, 136 insertions(+), 56 deletions(-) create mode 100644 src/generator-olo/seo-php/app/templates/gitignore create mode 100644 src/generator-olo/seo-php/app/templates/libs/common.js diff --git a/README.md b/README.md index 44dbb3c8..d294cb73 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,18 @@ > _共同点_:都是具有PC端SEO优化的工作流程。都采用了node服务,通过fis3进行资源定位及优化。 > _区别_: **seo-php**用的是generator-biketo的开发流程,模版渲染部分由PHP负责。最后产出在后台的服务上运行项目。 - **seo**采用了node服务,以handlebars为模版引擎,实现了页面的自动路由功能。最后产出在node服务上运行。 + **seo**采用了node服务,以handlebars为模版引擎,实现了页面的自动路由功能。最后产出在node服务上运行。是一种前后端分离的开发模式。 ## 更新 +**v2.0.13** + + 1. 支持node 6.x。 + 2. 在生产环境下给产出目录添加项目名,方便在fis3自带服务下启动多个项目。 + 3. `seo-php模式`添加common.js。 + 4. `seo-php模式`html的charset改为utf-8。 + 5. 添加`olo f 框架名`,可快速添加常用包。 + 6. `common.js`ajax错误提示更改成console形式。 + **v2.0.8** 1. `seo模式`解决.gitignore被NPM改变文件名BUG @@ -32,7 +41,10 @@ #### 生成视图 olo v view-name #### 生成组件 - olo c component-name + olo c component-name +#### 增加第三方包 + olo f lib-name +> olo f jq | jquery | ejs | throttle | zepto #### 监听项目 olo w > 启动项目中包括清空本地fis3服务文件的`server clean`,清空编译缓存、自动刷新、实时监听`release -clw`。 @@ -52,38 +64,54 @@ olo w (或者) npm run watch ``` #### 一. 公用配置 -![config配置](assets/config.jpg) - +``` +{ + "dev": { + "ENV": "DEV", + "PORT": 8000, + "ROOT": "good", + "APIDOMAIN": "http://127.0.0.1:8000/good" + }, + "prod": { + "ENV": "PROD", + "PORT": 8000, + "ROOT": "good", + "APIDOMAIN": "http://127.0.0.1:8000/good" + } +} +``` #### 二. seo ##### 目录结构 -![seo目录结构](assets/seo.png) + ``` -|---- assets # 静态文件目录 - |---- images # 图片文件 - |---- scss # 通用样式文件 -|---- components/ # 页面组件文件 -|---- views/ # 前端页面渲染 -|---- libs/ # 前端辅助类或工具类文件 -|---- mock/ # 模拟数据文件 -|---- routes/ # Node路由 - |---- _conf.json # 路由配置文件 - |---- init.js # 路由派发规则解析文件 -|---- controllers/ # 前端页面渲染路由文件 -|---- service/ # 前端接口路由文件 -|---- middleware/ # 路由中间件 -|---- utils/ # 后端辅助类或工具类文件 -|---- app.js # 系统启动文件 -|---- config.json # 系统环境配置文件 -|---- fis-conf.js # fis3 配置文件 -|---- pm2.json # pm2 配置文件 -|---- package.json # 管理项⽬的依赖 -|---- .editorconfig # ediforconfig 代码书写配置文件 -|---- .eslintrc # eslint 代码规范性检查配置文件 -|---- .gitignore # git 仓库文件忽略配置 +|---- assets # 静态文件目录 + |---- images # 图片文件 + |---- scss # 通用样式文件 +|---- components/ # 页面组件文件 +|---- views/ # 前端页面渲染 +|---- libs/ # 前端辅助类或工具类文件 + |---- common.js # 在此文件引入的第三方插件不会模块化(例:jquery),项目中可以直接用($) + |---- statistics.js #统计数据,放在html的最后。 +|---- mock/ # 模拟数据文件 +|---- routes/ # Node路由 + |---- _conf.json # 路由配置文件 + |---- init.js # 路由派发规则解析文件 +|---- controllers/ # 前端页面渲染路由文件 +|---- service/ # 前端接口路由文件 +|---- middleware/ # 路由中间件 +|---- utils/ # 后端辅助类或工具类文件 +|---- app.js # 系统启动文件 +|---- config.json # 系统环境配置文件 +|---- fis-conf.js # fis3 配置文件 +|---- pm2.json # pm2 配置文件 +|---- package.json # 管理项⽬的依赖 +|---- .editorconfig # ediforconfig 代码书写配置文件 +|---- .eslintrc # eslint 代码规范性检查配置文件 +|---- .gitignore # git 仓库文件忽略配置 ``` ##### 数据模拟 -mock数据功能内嵌在node服务中,功能用法和fis文档上说明的一样。`http://fis.baidu.com/fis3/docs/node-mock.html` +mock数据功能内嵌在node服务中,功能用法和fis文档上说明的一样。[http://fis.baidu.com/fis3/docs/node-mock.html][1] ##### 注意事项 1、 页面路由 **controllers>index.js** ```javascript @@ -175,17 +203,28 @@ module.exports = { > 功能、用法与`generator-biketo`相类似。 ##### 目录结构 -![seo-php目录结构](assets/seo-php.jpg) -**assets** 静态文件,包括图片和初始化css; -**c** 组件; -**libs** 公用类库; -**server** node服务; -**views** 页面视图; -**config.json** 发布产出、接口配置; -**fis-conf.js** fis 配置; -**package.json** 项目包配置. +``` +|---- assets # 静态文件目录 + |---- images # 图片文件 + |---- scss # 通用样式文件 +|---- components/ # 页面组件文件 +|---- views/ # 前端页面渲染 +|---- libs/ # 前端辅助类或工具类文件 + |---- common.js # 在此文件引入的第三方插件不会模块化(例:jquery),项目中可以直接用($) + |---- statistics.js #统计数据,放在html的最后。 +|---- mock/ # 模拟数据文件 +|---- controllers/ # 前端页面渲染路由文件 +|---- service/ # 前端接口路由文件 +|---- utils/ # 后端辅助类或工具类文件 +|---- app.js # 系统启动文件 +|---- config.json # 系统环境配置文件 +|---- fis-conf.js # fis3 配置文件 +|---- package.json # 管理项⽬的依赖 +|---- .editorconfig # ediforconfig 代码书写配置文件 +|---- .eslintrc # eslint 代码规范性检查配置文件 +|---- .gitignore # git 仓库文件忽略配置 +``` ##### 注意事项 1. `{{#if dev}}`*handlebars*语法区分纯前端开发和后台模板开发; 2. `{{> cmp}}`引入组件; -3. 可以自行加入`helper`并在_conf.js_中的*handlebars*配置项中配置; - +3. 可以自行加入`helper`并在 _conf.js_ 中的 *handlebars* 配置项中配置; diff --git a/index.js b/index.js index 7ea931d3..7426df7a 100755 --- a/index.js +++ b/index.js @@ -59,7 +59,6 @@ olo .option('--child-flag', 'hack fis3-release-watch --child-flag') .action(function () { // server.clean(); - release({ // c: true, w: true, diff --git a/package.json b/package.json index d7a92d3a..0cc474cb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "olo", - "version": "2.0.12", + "version": "2.0.13", "description": "基于fis3的前端工程流", "main": "index.js", "bin": { diff --git a/src/generator-olo/app/index.js b/src/generator-olo/app/index.js index 5a621ed3..85562b76 100644 --- a/src/generator-olo/app/index.js +++ b/src/generator-olo/app/index.js @@ -48,7 +48,6 @@ module.exports = generators.Base.extend({ value: 'seo-php' }] }]).then(function(answers) { - this.log(answers); this.actName = answers.name; this.oloType = answers.type; diff --git a/src/generator-olo/seo-php/app/index.js b/src/generator-olo/seo-php/app/index.js index c45215ae..e5632dee 100644 --- a/src/generator-olo/seo-php/app/index.js +++ b/src/generator-olo/seo-php/app/index.js @@ -18,6 +18,7 @@ module.exports = generators.Base.extend({ this.copy('.bowerrc', '.bowerrc'); this.copy('.eslintrc', '.eslintrc'); this.copy('.editorconfig', '.editorconfig'); + this.copy('gitignore', '.gitignore'); this.directory('server', 'server'); this.directory('libs', 'libs'); diff --git a/src/generator-olo/seo-php/app/templates/_config.json b/src/generator-olo/seo-php/app/templates/_config.json index b0bb58fd..64c445eb 100644 --- a/src/generator-olo/seo-php/app/templates/_config.json +++ b/src/generator-olo/seo-php/app/templates/_config.json @@ -1,11 +1,11 @@ { "dev": { - "dev": true, - "root": "" + "dev": true, + "root": "<%= actName %>" }, "prod": { - "dev": false, + "dev": false, "root": "<%= actName %>" }, "port": 2000 -} \ No newline at end of file +} diff --git a/src/generator-olo/seo-php/app/templates/fis-conf.js b/src/generator-olo/seo-php/app/templates/fis-conf.js index e01c04bc..3eab7034 100644 --- a/src/generator-olo/seo-php/app/templates/fis-conf.js +++ b/src/generator-olo/seo-php/app/templates/fis-conf.js @@ -60,9 +60,8 @@ fis.match(/^\/assets\/scss\/(.*)$/, { fis.match(/^\/(([^\/]+)\/)*images\/(.*)$/, { release: '/${base.static}/images/$3' }); -fis.match(/^\/libs\/((jquery).*)\.js$/, { - release: '/${base.static}/$1.js', - // url: '.${base.static}/jquery.js' +fis.match(/^\/libs\/((common).*)\.js$/, { + release: '/${base.static}/$1.js' }); fis.match(/^\/views\/([^\/]+)\/(.*)$/, { diff --git a/src/generator-olo/seo-php/app/templates/gitignore b/src/generator-olo/seo-php/app/templates/gitignore new file mode 100644 index 00000000..af026e6f --- /dev/null +++ b/src/generator-olo/seo-php/app/templates/gitignore @@ -0,0 +1,4 @@ +node_modules/ +.DS_Store +.idea/ +.vscode/ diff --git a/src/generator-olo/seo-php/app/templates/libs/common.js b/src/generator-olo/seo-php/app/templates/libs/common.js new file mode 100644 index 00000000..c6e1e726 --- /dev/null +++ b/src/generator-olo/seo-php/app/templates/libs/common.js @@ -0,0 +1,40 @@ +'use strict'; +/** + * common.js + * @version 1.0 + * @description 共用初始化 + * @author Xxx + */ +__inline('./jquery.min.js'); + +/** + * IE console兼容 + */ +if (!window.console && !console.firebug){ + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; + + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} +/** + * AJAX错误处理 + */ +$(document).ajaxError(function(event,xhr,options,exc){ + switch (xhr.status){ + case(500): + alert('服务器系统内部错误。'); + break; + // case(401): + // alert("未登录"); + // break; + // case(403): + // alert("无权限执行此操作"); + // break; + case(408): + alert('网络不给力,再试一次。'); + break; + default: + console.log('[ajax]未知错误。'); + } + }); diff --git a/src/generator-olo/seo-php/c/index.js b/src/generator-olo/seo-php/c/index.js index 41fb1da4..85f8d22a 100644 --- a/src/generator-olo/seo-php/c/index.js +++ b/src/generator-olo/seo-php/c/index.js @@ -49,7 +49,6 @@ module.exports = generators.Base.extend({ this.bowerInstall(cmpnt, { save: true },function(e){ - console.log(e); console.log('OK'); }); }, diff --git a/src/generator-olo/seo-php/view/templates/_index.handlebars b/src/generator-olo/seo-php/view/templates/_index.handlebars index 39babd4f..0c6e40f8 100755 --- a/src/generator-olo/seo-php/view/templates/_index.handlebars +++ b/src/generator-olo/seo-php/view/templates/_index.handlebars @@ -1,7 +1,7 @@ - + view - <%= viewName %> @@ -11,7 +11,7 @@ {{!-- {{> cmpName}} --}} - + \ No newline at end of file diff --git a/src/generator-olo/seo/app/templates/_config.json b/src/generator-olo/seo/app/templates/_config.json index 540b1080..4481e2f5 100644 --- a/src/generator-olo/seo/app/templates/_config.json +++ b/src/generator-olo/seo/app/templates/_config.json @@ -2,14 +2,14 @@ "dev": { "ENV": "DEV", "PORT": 8000, - "ROOT": "", - "APIDOMAIN": "http://127.0.0.1:8000" + "ROOT": "<%= actName %>", + "APIDOMAIN": "http://127.0.0.1:8000/<%= actName %>" }, "prod": { "ENV": "PROD", "PORT": 8000, "ROOT": "<%= actName %>", - "APIDOMAIN": "http://127.0.0.1:8000" + "APIDOMAIN": "http://127.0.0.1:8000/<%= actName %>" } } diff --git a/src/generator-olo/seo/app/templates/libs/common.js b/src/generator-olo/seo/app/templates/libs/common.js index 51b0126c..c6e1e726 100644 --- a/src/generator-olo/seo/app/templates/libs/common.js +++ b/src/generator-olo/seo/app/templates/libs/common.js @@ -35,6 +35,6 @@ $(document).ajaxError(function(event,xhr,options,exc){ alert('网络不给力,再试一次。'); break; default: - alert('未知错误。'); + console.log('[ajax]未知错误。'); } });