php 使用nodejs 压缩合并js css

一、压缩合并所需工具
1,nodejs 下载地址:https://nodejs.org/en/download/
2,nodejs uglify-js,用于压缩合并js jquery便是使用此工具压缩的 模块地址:https://www.npmjs.com/package/uglify-js
3,nodejs clean-css,用于压缩合并css,此工具能够自动转换css中图片引入路径。css中引用其他css文件也将自动合并 模块地址:https://www.npmjs.com/package/clean-css

二、工具安装与配置
1,将nodejs解压到如下目录

/usr/local/node

将nodejs加入环境变量

ln -s /usr/local/node/bin/node /usr/bin/node

配置npm全局模块路径和npm缓存目录

sudo curl -L https://www.npmjs.com/install.sh | sudo sh

ln -s /usr/local/node/bin/npm /usr/bin/npm
mkdir /usr/local/node/node-global
mkdir /usr/local/node/node-cache
npm config set prefix "/usr/local/node/node-global"
npm config set cache "/usr/local/node/node-cache"

2,安装 uglify-js,进入步骤一中的模块地址可以看到使用npm安装的命令

npm install uglify-js -g

3,安装 clean-css,进入步骤一中的的模块地址可以看到npm安装的命令

npm install
npm install clean-css-cli -g

安装完成后便可在/usr/local/node/node-global/bin目录下看到两个文件,将整个/usr/local/node文件夹所有者更改为与nginx同一用户组,本文中使用的是www

cleancss 
uglifyjs

三、使用示例
使用时请保证php的exec()函数没有被禁止
下边创建了一个测试的web目录如下图:
1
1,压缩合并css
上图可以看到两个css文件(H-ui.admin.css H-ui.css )总大小为160k创建test.php文件写入如下代码

<?php
exec('node /usr/local/node/node-global/bin/cleancss H-ui.admin.css H-ui.css -c -m -o all.css');

第一个参数为使用nodejs
第二个参数为node模块执行文件所在绝对路径
第三个参数为需要压缩合并的文件路径,本文中跟php文件在同一个路径所以直接写文件名就可以,多个文件用空格分隔
第四个参数 -c -m 为node模块的压缩选项,具体作用请查看文档
第五个参数-o all.css 为压缩合并后的文件存放目录
运行文件后可看到目录里多出了一个all.css文件,大小为116k,此文件是 H-ui.admin.css H-ui.css 压缩合并后的结果去除了代码中的注释、最后一个分号、换行等等,并合并为了一个文件减少了http请求
2,压缩合并js文件
将test.php代码改为

<?php
exec('node /usr/local/node/node-global/bin/uglifyjs -o all.js jquery.js H-ui.js');

运行代码后目录下出现了all.js文件,原两个文件大小为304K压缩后为164K
3
四、结束
1,本文只在于演示如使用php压缩css js 在使用node模块进行压缩时还有很多选项可以使用的,可以让文件压缩的更小,可以自行百度研究
2,在使用过程中应使用缓存或生成静态,避免每次都进行压缩,可以根据不同的环境选择不同的压缩参数,还有很多优化的方法,使用过程中自行学习 欢迎加q交流!

svn新建及合并分支图文教程

使用TortoiseSVN新建分支
由于这三个目录是刚建好的,为了更好体现分支的新建及合并对项目中代码的影响,先伪造点代码文件。
打开trunks目录,在trunks目录下新建两个文本文件a.php,b.php:
20160614102818
打开a.php输入以下内容:
20160614145720
b.php文件可以随机输入些,本例中主要用于观察后续是否变化。
两个文件编辑完成后使用SVN Commit将更改提交到SVN.

开始创建分支
1、在trunks上点击右键,在TortoiseSVN菜单中选择Branch/Tag;

2、在To path输入框中输入新建分支的路径,一般是:/branches/分支名,也就是相当于分支保存的路径名;

3、在下面选择HEAD revision in the repository,为当前SVN中trunks目录下最新的代码建立分支,如果需要为制定的revision建立分支,可以进行选择;

4、点击OK分支建立完成。

打开branches目录,发现目录依然为空,没有刚才建立的分支,这是因为分支建立的操作是在服务器端完成的,当需要编辑分支时,在branches目录点击Update,刚才建立的分支就会下载下来。

建立分支的过程会非常的快,不会因为主干中的文件多而降低速度,原因后续说明。

SVN合并分支

第二篇中举过例子,有可能存在主干、分支并行开发的情况,下面我们模拟一下。

将刚才新建的分支Update下来,打开分支中的a.php,对其进行编辑如下:
1
在打开trunks主干中的a.php,对其进行编辑如下:
2
对以上两个文件的改动基本上模拟了分支、主干并行的情况,两个目录下的同一个文件被分别修改。

将以上两个文件的改动Commit,下面进行合并操作。

合并分支到主干
1、在trunks上点击右键,在TortoiseSVN菜单中选择Merge;

2、在弹出的窗口中选择第二项,可以理解为合并两个树;
3
3、在From和To中都选择要合并的分支目录;

4、在From的Revision选择创建分支时的那个Revision,具体就是点击Show log,选择最下面那一条;

5、在To的Revision选择HEAD Revision,也就是最新操作;
6

6、点击Next,下一个页面使用默认项,点击Merge;
5

7、合并完成。

这时候会发现trunks目录下的文件已被修改,这时候的合并操作是在本地完成的,并没有提交到SVN,这与分支建立时有区别,请注意。

也就是说如果你在本次合并中发现问题,只需要对trunks目录Revert,放弃本次合并即可。

可以看一下trunks目录合并后的a.php文件,大家与前面对照下,已达到我们想要的合并效果

创建分支时发生了什么

SVN服务器在创建分支时的拷贝是非常有效率的,瞬间就可以完成,并且只需要很少的空间来存储,所以不需要担心分支建立过多导致项目仓库膨胀的问题。

可以理解为SVN在服务器中存储的是文件的引用,而非物理上的拷贝。

不要多次合并同一个分支到主干

合并分支有一个原则,就是不要对一个分支多次合并到主干,虽然你有可能在合并后又对分支进行了修改,之所以这样说是有原因的。

上面提到在合并分支时,在From的Revision选项中需要选择合并的其实版本,如果是第一次合并只需要选择最早的那个版本即可,但如果合并过一次,你真的能记得你上次合并时最后的Revision是多少吗?

良好的操作是合并后新建分支。

合并主干到分支

其实合并是个可逆的过程,合并主干到分支与合并分支到主干正好是相反的操作,大家如果会了一种另一种应该非常简单。

Composer安装yii2.0

768684492400b1470aa7882b29d5c

一、下载安装composer
下载地址:https://getcomposer.org/download/

安装的时候会自动检测PHP所在目录。我用的是wampserver所在目录C:\wamp
安装完成后在cmd输入:

composer -v

QQ截图20160614102343
显示上图界面就是安装成功。安装成功后会在当前盘programData目录下创建ComposerSetup目录。例如我的C:\ProgramData\ComposerSetup

二、使用composer安装yii2框架
进入C:\ProgramData\ComposerSetup\bin目录会看到有三个文件
QQ截图20160614102818
将composer.phar文件复制到需要使用composer的目录。例如我的项目需要安装在F:\www目录,就将文件复制到此目录,此时进入F:\www目录按住shift键,点击鼠标右键 选择“在此处打开命令窗口”即打开了cmd命令行了。
在cmd窗口输入命令

php composer.phar global require "fxp/composer-asset-plugin:~1.1.1"

如果显示如下错误则是php的openssl扩展没有开启,开启后再次运行即可
QQ截图20160614103326
成功运行的界面:
QQ截图20160614105208
下载完成后在运行框架安装命令:

php composer.phar create-project yiisoft/yii2-app-advanced advanced 2.0.8

请注意,您可能会被提示安装过程中输入你的 GitHub 的tokens(GitHub tokens 请自行处理,此处不做介绍)。这是正常的。只要输入它们并继续。至此就安装完成了。