这又是一个一次整合终身受益;不止是终身;换个项目同样可以很方便复用;不信你看另一个项目: thinkphp整合系列之gulp实现前端自动化

虽然我等叫php程序猿;但是不可避免的是要跟html打交道的;而且php这么容易开发web;难道我们不想自己随手写点什么?laravel这类比较前卫的框架;早就深度集成了很多前端的东西;现在;就让我们手动为thinkphp也插上gulp的翅膀吧;第一步;在自己的thinkphp项目根目录中创建 package.json;

{ "name": "baijunyao/thinkphp-bjyadmin", "version": "1.0.0", "description": "博客", "main": "index.js", "scripts": { "test": "echo \\"Error: no test specified\\" && exit 1" }, "keywords": [ "白666", "博客" ], "author": "baijunyao", "license": "Apache2", "devDependencies": { "babel-preset-es2015": "^6.18.0", "babel-preset-stage-2": "^6.18.0", "browser-sync": "^2.14.0", "gulp": "^3.9.1", "gulp-babel": "^6.1.2", "gulp-cleanhtml": "^1.0.1", "gulp-concat": "^2.6.0", "gulp-contrib-copy": "^0.1.2", "gulp-decomment": "^0.1.3", "gulp-imagemin": "^3.0.2", "gulp-less": "^3.1.0", "gulp-load-plugins": "^1.2.4", "gulp-minify-css": "^1.2.4", "gulp-plumber": "^1.1.0", "gulp-rename": "^1.2.2", "gulp-sass": "^2.3.2", "gulp-uglify": "^2.0.0" }
}

第二步;在自己的thinkphp项目根目录中创建 gulpfile.js;

var gulp        = require('gulp'), sass        = require('gulp-sass'), minifyCss   = require('gulp-minify-css'), plumber     = require('gulp-plumber'), babel       = require('gulp-babel'), uglify      = require('gulp-uglify'), clearnHtml  = require("gulp-cleanhtml"), imagemin    = require('gulp-imagemin'), copy        = require('gulp-contrib-copy'), browserSync = require('browser-sync').create(), reload      = browserSync.reload; // 定义源代码的目录和编译压缩后的目录
var src='tpl_src', dist='tpl';
// 编译全部scss 并压缩
gulp.task('css', function(){ gulp.src(src+'/**/*.scss') .pipe(sass()) .pipe(minifyCss()) .pipe(gulp.dest(dist))
})
// 编译全部js 并压缩
gulp.task('js', function() { gulp.src(src+'/**/*.js') .pipe(plumber()) .pipe(babel({ presets: ['es2015'] })) .pipe(uglify()) .pipe(gulp.dest(dist));
});
// 压缩全部html
gulp.task('html', function () { gulp.src(src+'/**/*.+(html|tpl)') .pipe(clearnHtml()) .pipe(gulp.dest(dist));
});
// 压缩全部image
gulp.task('image', function () { gulp.src([src+'/**/*.+(jpg|jpeg|png|gif|bmp)']) .pipe(imagemin()) .pipe(gulp.dest(dist));
});
// 其他不编译的文件直接copy
gulp.task('copy', function () { gulp.src(src+'/**/*.!(jpg|jpeg|png|gif|bmp|scss|js|html|tpl)') .pipe(copy()) .pipe(gulp.dest(dist));
});
// 自动刷新
gulp.task('server', function() { browserSync.init({ proxy: "tbjyadmin.com", // 指定代理url notify: false, // 刷新不弹出提示 }); // 监听scss文件编译 gulp.watch(src+'/**/*.scss', ['css']); // 监听其他不编译的文件 有变化直接copy gulp.watch(src+'/**/*.!(jpg|jpeg|png|gif|bmp|scss|js|html)', ['copy']);    // 监听html文件变化后刷新页面 gulp.watch(src+"/**/*.js", ['js']).on("change", reload); // 监听html文件变化后刷新页面 gulp.watch(src+"/**/*.+(html|tpl)", ['html']).on("change", reload); // 监听css文件变化后刷新页面 gulp.watch(dist+"/**/*.css").on("change", reload);
});
// 监听事件
gulp.task('default', ['css', 'js', 'image', 'html', 'copy', 'server'])

把 gulpfile.js 中的src 和 dist 变量替换为自己项目的实际目录;把proxy 替换为自己的本地自定义域名;第三步: 命令行运行如下命令:

# 安装各种包
cnpm install
# 运行gulp
gulp

如果不出意外;会自动编译并打开浏览器了;例如thinkphp整合系列之gulp实现前端自动化  显示的效果那样,简单吧;就3步;但是为了写这篇文章;我花了2个月时间写了7篇文章做铺垫;想想;我的内心都是崩溃的;以项目为例讲解下吧: 运行gulp后;会有如下操作; tpl_src 目录下的所有scss文件编译压缩输出到 src 目录下; tpl_src 目录下的所有js使用babel转码压缩输出到 src 目录下; tpl_src 目录下的所有图片压缩输出到 src 目录下; tpl_src 目录下的所有html压缩输出到src目录下; tpl_src 目录下的其他类型文件直接复制到src目录下; 触发监听任务;有文件变动自动执行上述几条任务;并且自动刷新浏览器;神马?你的html和各种静态文件还都放在Application的各个模块下的view目录中?那先来看这篇文章:thinkphp把模板文件View独立出来另外;小伙子;我看你骨骼惊奇;必是 coding 奇才;将来维护程序猿界的正义与和平的重任就交给你了;

thinkphp整合系列之gulp实现前端自动化相关推荐

  1. Gulp构建前端自动化工作流

    ## Gulp构建前端自动化工作流 ### Gulp构建前端自动化工作流之:常用插件介绍及使用 在对Gulp有了一个初步的了解之后,我们开始构建一个较为完整的Gulp开发环境. 本文主要分为6个段落: ...

  2. 在Maven+Spring项目中使用Node.js的Gulp进行前端自动化构建

    摘要: 在Maven+Spring项目中使用Node.js的Gulp进行前端自动化构建 刚开始打算进行前后端分离开发,后来发现在使用JSP或者Freemarker做动态页面时,想发挥这些自动化构建工具 ...

  3. thinkphp整合系列之融云即时通讯在线聊天

    随着技术的发展:现代的网站:越来越趋于应用形式了: 不再是像以前那样需要用户刷新页面:获取数据了: 服务器端可以主动向用户推送数据:更加及时性了: 比较突出的就是即时通讯在线聊天: 今个:我们要打造的 ...

  4. thinkphp整合系列之phpqrcode生成二维码

    php生成二维码其实挺简单的:当然指的是使用qrcode类库: 因此关于是否要写这篇博客:我是犹豫了再三的: 不过最后还是决定写下吧:如果有童鞋急着用:就可以直接引了: 再个也可以作为即将写的文章微信 ...

  5. thinkphp整合系列之微信扫码支付

    微信作为移动互联网的航空母舰: 在支付发力后:现在也是不容小觑的: 在线下的很多场景中比支付宝更甚: 君不见连路边的小贩都支持二维码扫一扫支付了: 此处是省略500字的微信支付开通过程: 一:导入sd ...

  6. ios 自己服务器 苹果支付_thinkphp整合系列之苹果AppStore内购付款的服务器端php验证...

    如果要演一部霸道总裁的剧: 我想这主角必须非苹果莫属了: 苹果的霸道实在是出了名的: 这不:如果是非实物的交易: 现在你不给苹果交个过路费: 那都是立马被审核处死的节奏: 好了:以上仅为吐槽: 正题: ...

  7. (转)Bootstrap 之 Metronic 模板的学习之路 - (7)GULP 前端自动化工具

    https://segmentfault.com/a/1190000006738327 初步了解 Metronic 的结构和应用后,我们就可以在项目中应用起来了.考虑到实际项目应用时,会有很多文件需要 ...

  8. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    构建一个基本的前端自动化开发环境 -- 基于 Gulp 的前端集成解决方案(四) 参考文章: (1)构建一个基本的前端自动化开发环境 -- 基于 Gulp 的前端集成解决方案(四) (2)https: ...

  9. php配合jade使用,前端自动化系列(四)之jade预编译html

    刚开始写这篇文章的时候: 其实我是拒绝的: 因为在 前端自动化系列(二)之less.scss.sass.stylus css预处理器 中: 我已经表明了我的态度: 我是不喜欢那种靠缩进来体现等级层次感 ...

最新文章

  1. mysql中关系怎么弄_mysql数据库关系操作
  2. Segment Routing — SRv6 — 统一的 SDN 控制面与数据面
  3. html一个空格多少像素,一个空格占几个字符?
  4. Python类的构造方法__init__(self)和析构函数__del__详解
  5. 简单谈谈haskell
  6. python网络爬虫 抓取金融分析师名单
  7. ArcGIS Enterprise 10.5.1 静默安装部署记录(Centos 7.2 minimal)- 6、总结
  8. 如何调整mysql严谨度_如何管理 MySQL 的 binlog 收藏
  9. 解决微信小程序图片上传点击无反应问题
  10. 序列傅里叶变换性质matlab,MATLAB傅里叶变换及性质.docx
  11. 电路分析 极简复习指导、公式推导、常用结论归纳 第十章 含有耦合电感的电路
  12. 精益创业实战 - 内容简介
  13. nas做服务器虚拟化共享存储,NAS虚拟化的部署及实现解析
  14. 全连接层输入为什么是固定维度的(拉直/压扁Flatten成为列向量)
  15. rtx3050和rtx3060差距大吗 rtx3050和rtx3060的区别
  16. 云服务器liunx系统怎么安装,云服务器怎么安装linux系统
  17. 【科普】机密资产Confidential Asset白皮书(1)
  18. for example: not eligible for auto-proxying问题解决
  19. 支持firefox3.0插件firebug下载及安装
  20. 为什么程序员找对象这么难?

热门文章

  1. angularJs的学习笔记-01(创建项目)
  2. OpenERP与Python 元编程
  3. ARM 寄存器 和 工作模式了解
  4. PoPo数据可视化第9期
  5. iOS事件处理,看我就够了~
  6. 如何使用VB编写Excel的COM组件
  7. VMware虚拟机文件夹中各文件作用详解
  8. Pulltorefresh使用中碰到的问题
  9. 虚拟机使用镜像文件安装系统
  10. FUSE——用户空间文件系统