OK,在本篇中我们将介绍如何调式和发布前面我们已经构建好的项目。
调式构建结果——web server
由于我们将项目进行构建之后,发现构建之后项目中的资源文件的路径从“相对路径”——>变成了“绝对路径”。这样一来,不方便我们的调式。所以,fis3为了解决这个问题,就在fis3中内置了web server 以方便调式查看我们的构建结果。
那问题是我们该如何使用呢?往下看~
fis3 server open
打开web server根目录
(1)在使用该命令的时候,有一个前提————即,我们在构建项目时,不指定输出目录,即fis3 release -d ./output 变成了 fis3 release命令;
(2)使用fis3 release 构建时,fis3会将构建结果发送到内置的web server根目录下。
(3)构建完成之后,使用fis3 server open命令来打开在web server根目录下的构建结果。
如图:
fis3 server start
启用web server
(1)接下来,我们要启动本地的web server服务,使用 fis3 server start
命令,服务启动之后,会自动在默认浏览器打开URL:http://127.0.0.1:8080,注意:当8080端口被占用时,你可以通过fis3 server -h帮助命令找到更多的关于启动web server服务的参数,包括对端口号的设置等。
如图:
(2)需要知道的是:web server在不重启电脑或是输入关闭web server命令的情况下,是不会自己关闭的。fis3内置的web server也是如此。所以,我们无需每次启动一次web server。
fis3 release -w
文件监听
这是文件监听命令。例如,当我们修改了某项目文件,之后如果我们按照常规的构建发布做法——就是还要再次执行一次fis3 relase
,那么,这样就会导致有些没有被修改的文件再次被编译——即重复。这样,无形增加了编译时间,这对文件很庞大的项目而言是显而易见的。
所以,我们使用 fis3 release -w
来减少这样不必要的重复操作。对于 fis3 release -w
它只会编译改动的文件。改动时,你只要保存(ctrl+s)之后,监听就会执行。
如图:
fis3 release -wL
浏览器自动刷新
这个命令,能让我们在构建发布之后,让浏览器自动刷新URL-127.0.0.1:8080,而无需手动去刷新,这也提升了我们的构建体验,是个不错的想法。
发布
这部分作者没有实际进行测试过。如果你觉得还用不到,可以先略过。这里只进行一个简单的介绍。
传统地,在项目开发、测试完成之后,我们会将项目发布到服务器上。有时会先发布到一个test(测试)服务器上,再发布到正式服务器上。我们会用到如ftp这样的上传工具。
在fis3中,默认提供的是使用Http的方式上传代码。 (1)在上传之前,我们需要和后端程序员,如PHP,一起协调。在测试服务器上部署上传接收脚本。将该脚本放到测试服务器上的某个web根目录下,并配置一个能访问到的url即可! PHP脚本如下:
<?php
@error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
function mkdirs($path, $mod = 0777) {
if (is_dir($path)) {
return chmod($path, $mod);
} else {
$old = umask(0);
if(mkdir($path, $mod, true) && is_dir($path)){
umask($old);
return true;
} else {
umask($old);
}
}
return false;
}
if($_POST['to']){
$to = urldecode($_POST['to']);
if(is_dir($to) || $_FILES["file"]["error"] > 0){
header("Status: 500 Internal Server Error");
} else {
if(file_exists($to)){
unlink($to);
} else {
$dir = dirname($to);
if(!file_exists($dir)){
mkdirs($dir);
}
}
echo move_uploaded_file($_FILES["file"]["tmp_name"], $to) ? 0 : 1;
}
} else {
echo 'I'm ready for that, you know.';
}
假定我们设定的URL是: http://cq.01.p.p.baidu.com:8888/receiver.php 那么在fis-conf.js文件中我们就该这样配置:
fis.media('test').match('*',{
deploy:fis.plugin('http-push',{
receiver:'http://cq.01.p.p.baidu.com:8888/receiver.php',
to:'home/work/htdocs' //该路径指的是测试服务器上的,并非本地
})
})
然后,fis3 release test 来上传测试服务器。
注意:deploy插件 deploy插件是一个专门用于发布数据的插件,如发布到哪里(文件夹、远端服务器),用什么方式发布(http、ftp、git…)。它能作用某个文件、某类文件或是全部文件。
默认情况下,我们fis3 release 之后,会将构建结果发送到fis3 内置的web server的根目录下。 而,替代内置的web server从根本上来说,就是改变在fis3 release时改变发送构建结果的目录。 例如,我们将构建结果发送到/Users/imaginexie/htdocs 目录下:
**做法:**配置文件fis-conf.js
fis.match('*',{
deploy:fis.plugin('local-deliver',{
to:'/Users/imaginexie/htdocs'
})
})
这样的话,我们就可以在/Users/imaginexie/htdocs目录下找到我们的构建结果啦~ 如图:
OK,关于fis3的调式与发布就到这里。
需要注意的一点,就是将项目构建部署到服务器上,需要你耐心的调式。