Node.js, Express的服务器搭建过程的问题
Express : node.js 的框架,根据2012年BYvoid的说法,是node.js官方唯一推荐的框架
怎么搭建项目? - 安装nodejs->npm->express - express 的问题:
2017年, express-generator已经被独立成命令行工具了,所以要用 npm install express-generator 这样才能用express命令
怎么启动项目?
启动服务器可以用node app.js,因为app.js装载了express模块并且运行了必须的函数; 或者用npm start,它会读取package.json执行命令
express框架的代码: 会出现views, config, apps目录
可能要用到的知识(语法)
一个网页的代码中会有一些地方需要js处理,或者处理DOM节点,要用ajax - jQuery - 框架的常见分层(比如路由、post) - express跟请求响应的方法 app.all、app.get、app.post, app.use
有人说all,get,post是三个别名,其实是扯淡,但是三个方法也真的差不多,它只是决定了get方法和post方法访问某个url的时候对应的处理方法。但是这种设计是非常反常理而且看不出有多大意义的,不是很懂这种设计思想。一般情况下不应该是传递参数吗? 但是另外的on和addEventListener倒是明显地有问题了,这两个函数完全相同,但是名字不一样。反正都是当事件触发的时候调用了函数。
注意中间件
目前为止不是很懂中间件和框架的关系。而且也不是很清楚框架跟http请求的顺序,中间件的功能等等。
如果单纯靠网上的代码是比较难实现大型系统的。 要做好模块化,尽量做好层次分级和可以配置。 大型系统的架构很复杂,可能还要有mongodb存储。
在写爬虫的时候经常要等待防止被识别,可能会看到下面的方法,尽管如此这个是没什么用的,因为会大大降低效率,还不如用代理, - javascript代码的setTimeOut(可以用来循环调用自身),这个是基础js里有的函数,但是看起来也是异步回掉函数。
回调函数
说到代理,刚刚看了语法感觉是只要在request方法里改了http头部的某个url就OK了?这个需要验证。
在页面解析方面: cheerio跟一般的jquery的语法相似,但是它是一个缩水版本(在cheerio的官网有说),比如祖先元素必须确定(用id)
Promise (可选外部模块) 解决回调地狱 - .then函数=>用来解决回调地狱陷阱
其他设计缺陷
Node.js问题在哪里? require不像C++一样会对产生的命名冲突进行检测, 当核心模块(http, fs)跟其他模块命名冲突时,优先加载核心模块 - js的调试错误在浏览器的console是可以看的
visual studio code
在Visual Studio Code中是可以安装Node.js的插件的。好处跟其他的语言一样,在VS Code里看代码比较好看。