诚然,为了开发的便利高效,不得不用并行开发的方式--后端开发和前端开发并行开发,这时候问题就来了。对于一个同样的项目,并行开发如何拆分比较容易实现并达到真正的高效,我们在此处选择了以模板为分界点,数据为桥的开发方式。
前端开发人员负责模板及其周边的静态资源的开发工作,而后端和前端逻辑用数据作为桥梁进行串接,在这样一种开发模式下开发起初只需要制定好数据规则就可以愉快的进行开发了。
在前端这块,为了能畅通的使用这些数据进行开发,不得不进行本地模拟线上环境,使用模拟数据进行渲染,而恰巧需要一个便捷的本地server
来充当服务器的角色。这篇讲述一下这个server
的方方面面。
server
呢可以选择比较时髦的nginx
、lighttpd
、apache
等,当然fis已经集成了若干解析后端脚本的服务。
fis在支持本地server这块主要支持了node、java、php的渲染,算是支持了主流的一大半以上的后端语言的渲染。也提供了方便的命令
$ fis server -h
就像大多数服务器那样,支持两种模式rewrite
和非rewrite
,当rewrite
了以后呢,所有的请求会转发到某一个后端脚本上面;比如
$ fis server start --type php --rewrite index.php
所有的请求都会到index.php
脚本,然后呢就可以在这块解析请求返回想返回的数据了。
有心的同学可以看到我在调用命令的时候加了--type
,对,整个server
在没有设置--type
的时候是尝试启动模式;启动优先级是php->java->node
,而设置某一个--type
就会启动你想要的能解析后端脚本的服务。
当然了在没有--rewrite
的时候,是非rewrite
模式,会列出fis server open
这个目录下的所有文件及文件夹。
我们再来看看帮助信息
➜ fis server -h
Usage: server <command> [options]
Commands:
start start server
stop shutdown server
restart restart server
info output server info
open open document root directory
clean clean files in document root
install <name> install server framework
Options:
-h, --help output usage information
-p, --port <int> server listen port
--root <path> document root
--type <php|java|node> process language
--rewrite [script] enable rewrite mode
--repos <url> install repository
--timeout <seconds> start timeout
--php_exec <path> path to php-cgi executable file
--php_exec_args <args> php-cgi arguments
--php_fcgi_children <int> the number of php-cgi processes
--php_fcgi_max_requests <int> the max number of requests
--include <glob> clean include filter
--exclude <glob> clean exclude filter
其实可以看到更多的选项,其中我想给大家展示一下--php_exec
和--timeout
。
很多同学在启动fis本地server的时候,会发现php-cgi
找不到;在这个时候呢可以随便到php.net
下载一个你系统支持的php
,安装或解压以后会发现一个执行文件php-cgi
(windows叫php-cgi.exe
)
然后在启动的时候只要把这个php-cgi
的路径指给fis即可。
$ fis server start --php_exec <path-to-php-cgi>
如果不想在每次启动时加上长长的参数,可以把<path-to-php-install-dir>/bin
这个目录设置到环境变量里面。
另外呢,启动的时候还有可能超时,这时候可以适当的通过--timeout
设置长一点的超时时间即可。
$ fis server start --timeout 10000
说到这里,fis的server也介绍完了,在整个fis中,server不是强绑定的,你喜欢什么就可以用什么。下次我们说点别的,比如本地模拟环境的设计。