Mark24
细数那些一行启动一个静态web server的方法
静态web server
1. 你一定遇到过
我们想要快速的预览一个网页的时候,有时候我们打开它,浏览器会把他当做文件打开。
比如 test/index.html
当我们把index.html拖动到浏览器里,他总是以 file://path/to/your/file.html
以本地文件协议形式打开。
如果这样我们无法让他执行javascript、css……有时候他就像一个文本。
这里的问题就是,我们希望他可以作为一个 web server的形式打开。
2. 静态server有啥用
1)快速预览前端产物
本文给出一些一行代码打开静态server的方法。
他的作用就像一个开发server,或者一个 Nginx,默认当前目录作为资源目录,首页就是返回index.html,并且以相对当前目录的形式加载资源。
用这种方式,可以预览构建完的 前端静态文件。
2)共享目录
当然如果你在一个有文件的目录下,启动了静态server,并且开放给局域网。别人可以从你这里下载文件,看起来就像一个提供下载的服务器。
好了,搓搓手,让我们开始吧
一、细数那些一行启动静态server的方法
1. Nodejs
如果你用过 React的脚手架 create-react-app
在你第一次执行 yarn run build
的时候,一定看到过
.....
The project was built assuming it is hosted at /.
You can control this with the homepage field in your package.json.
The build folder is ready to be deployed.
You may serve it with a static server:
yarn global add serve
serve -s build
Find out more about deployment here:
https://cra.link/deployment
✨ Done in 17.14s.
这里的 serve就是一个 node的工具,
// 全局安装
yarn global add serve
// 目标路径下使用
serve -s build
默认打开是 0.0.0.0:5000
对局域网开放访问。想了解更多可以 serve --help
2. Python
简单介绍一下 Python2的一笔带过。
1) Python2
python -m SimpleHTTPServer 8000 .
2) Python3
相信没什么人使用Python2了,还是讲讲Python3吧。
python -m http.server
python3 -m http.server -b 0.0.0.0 5000
-m 是 -m mod : run library module as a script (terminates option list)
启动内部的包。这里就比Node的要好一点,Node是单独去安装一个程序。如果单独安装,其实就不方便了。
Python3已经是大多数操作系统、发行版的标配了,我们不需要单独安装。Python3内置了很多小程序。其中 -m就是指定启动这些程序。
默认http://0.0.0.0:8000/ , 可以 需要使用 -b 参数(也就是bind)手动指定一下 host,末尾跟上port。
3. Ruby
和Python类似,Ruby也已经是所有发行版的标配了。Ruby也有内置小程序。
ruby -run -ehttpd
# . 就是本地目录的意思,忽视它会报错
ruby -run -ehttpd . -p8000
ruby -run -ehttpd . -b0.0.0.0 -p8000
ruby的命令更有趣一点,这里要解释下。ruby -r 意思是 ruby require 这里后面要跟上一个库,这样就可以导入这个库。这里是un库。连起来竟然是 -run 读起来就像是 run,有意思的巧合。
-e 后面跟上执行的command,也就是ruby语句。连起来就是 -r 先引入 un库 -e 接着执行 httpd . -p8000
un库就是 un.rb
,这里面最有用的就是提供了一个 httpd 可以用来启动静态server
默认端口 port=8080
ruby -run -e httpd -- [OPTION] DocumentRoot
--bind-address=ADDR address to bind
--port=NUM listening port number
--max-clients=MAX max number of simultaneous clients
--temp-dir=DIR temporary directory
--do-not-reverse-lookup disable reverse lookup
--request-timeout=SECOND request timeout in seconds
--http-version=VERSION HTTP version
-v
二、其他方式
其他通过安装的方式就很多了。就不细细写了。几乎每个web server 都有快速启动的方法,不过有点麻烦。