请问webpack 服务器端必须用node 处理吗?

webpack 服务器端必须用node 处理吗


精慕HU
浏览 987回答 5
5回答

撒科打诨

node.js实现web服务器还是比较简单的,我了解node.js是从《node入门》开始的,如果你不了解node.js也可以看看!我根据那书一步一步的练习完了,也的确大概了解了node.js,不过里面写的路由的地方总感觉不方便,十一放假最后一天,试着写了个简单的web服务器,现在分享记录于此!http模块已提供了基本功能,所以我主要解决两个问题,1是静态资源的处理,2是动态资源的路由。静态资源在node.js里的意思是不变的,如图片、前端js、css、html页面等。动态资源我们一般指aspx页面,ashx页面,asp页面,jsp页面,php页面等,而node.js里其实没动态资源这一说,它对请求的处理都是由回调方法完成的,在我实现的httserver里,借鉴了ashx的写法,把处理请求的js文件看作动态资源。首先实现一个处理静态资源的函数,其实就是对本地文件的读取操作,这个方法已满足了上面说的静态资源的处理。//处理静态资源function staticResHandler(localPath, ext, response) {fs.readFile(localPath, "binary", function (error, file) {if (error) {response.writeHead(500, { "Content-Type": "text/plain" });response.end("Server Error:" + error);} else {response.writeHead(200, { "Content-Type": getContentTypeByExt(ext) });response.end(file, "binary");}});}而动态资源肯定不能一个方法搞定,就像你的网站有register.aspx、login.aspx等等,都需要你自己来写,在我的httpserver里,每个处理请求的js模块都导出processRequest(request,response)即可,比如实现一个register.js(只输出字符串register)exports.processRequest = function (request, response) {response.writeHead(200, { 'Content-Type': 'text/plain' });resp.end("register");}现在当请求到来时,我们要做的就是决定怎么处理,即路由。因为静态资源url指定静态资源大家都很习惯了,所以这里不变,比如访问http://localhost/img/logo.png 就是访问 web根目录\img\logo.png;访问http://localhost/js/what.js 就是访问 web根目录\js\what.js;而动态资源也是一般的js文件,即服务器端js,就比如我实现的这个httpserver.js和上面说的register.js都是不应该让用户访问的,所以路由的时候要判断,就是一些if、else,简单而强大是我的最爱,这里只看最后的的判断,fs.exists(localPath, function (exists) {if (exists) {if (staticRes) {staticResHandler(localPath, ext, response); //静态资源

qq_笑_17

Redis使用单线程的IO复用模型,自己封装了一个简单的AeEvent事件处理框架,主要实现了epoll、kqueue和select,对于单纯只有IO操作来说,单线程可以将速度优势发挥到最大,但是Redis也提供了一些简单的计算功能比如排序、聚合等,对于这些操作,单线程模型实际会严重影响整体吞吐量,CPU计算过程中,整个IO调度都是被阻塞住的。

陪伴而非守候

去除不必要的插件刚开始用 webpack 的时候,开发环境和生产环境用的是同一个 webpack 配置文件,导致生产环境打包的 JS 文件包含了一大堆没必要的插件,比如 HotModuleReplacementPlugin, NoErrorsPlugin... 这时候不管用什么优化方式,都没多大效果。所以,如果你打包后的文件非常大的话,先检查下是不是包含了这些插件。提取第三方库像 react 这个库的核心代码就有 627 KB,这样和我们的源代码放在一起打包,体积肯定会很大。所以可以在 webpack 中设置{entry: {bundle: 'app'vendor: ['react']}plugins: {new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js')}}
打开App,查看更多内容
随时随地看视频慕课网APP