当前位置: 首页 > 后端技术 > Node.js

2018年第33周-javeer对nodejs的体验

时间:2023-04-03 14:26:33 Node.js

nodejs和es6的语法nodejs和es6的语法不一样,比如模块系统,一个是CommonJS的require,一个是es6的import,写模块也是不同的。理解一下nodejs的npm,nodejs类似于java的jvm,所以在执行js的时候是这样的,假设文件server.jsnodeserver.js和npm,类似于java的maven,项目构建工具,既然是一个构建工具,需要配置文件,maven的配置文件是pom.xml,npm的配置文件是package.json,一个是xml,一个是json。npm初始化package.json文件:npminit-fnpm安装依赖全局依赖,比如安装常用的Node.jsweb框架moduleexpressdependencies,类似于PHP需要任何功能时安装modules。npminstallexpress-gglobalinstallation将安装包放在/usr/local或者你的node安装目录下。可以直接在命令行使用。本地依赖npminstallexpress本地安装会将安装包放在./node_modules(npm命令运行目录)下,如果没有node_modules目录,会在当前npm命令运行目录下生成一个node_modules目录.可以通过require()导入本地安装的包。依赖有以下区别:npminstallmoduleName命令将模块安装到项目的node_modules目录。模块依赖项不会写入devDependencies或依赖项节点。运行npminstall初始化项目时不会下载模块。npminstall-gmoduleName命令全局安装模块,不会将模块包保存在项目的node_modules目录下。模块依赖项不会写入devDependencies或依赖项节点。运行npminstall初始化项目时不会下载模块。npminstall-savemoduleName命令将模块安装到项目node_modules目录中。将模块依赖项写入dependencies节点。当运行npminstall初始化项目时,模块将被下载到项目目录。当运行npminstall--production或将NODE_ENV变量的值指定为production时,模块将自动下载到node_modules目录。npminstall-save-devmoduleName命令将模块安装到项目node_modules目录中。将模块依赖项写入devDependencies节点。当运行npminstall初始化项目时,模块将被下载到项目目录。当运行npminstall--production或指定NODE_ENV变量的值为production时,模块不会自动下载到node_modules目录。综上所述,devDependencies节点下的模块就是我们开发时需要用到的,比如项目中使用的gulp,压缩css和js的模块。这些模块在我们的项目部署后就不需要了,所以我们可以使用-save-dev来安装它们。像express这样的模块是项目运行所必需的,应该安装在dependencies节点下,所以我们应该以-save的形式安装。既然webpack类似于npm中的maven,那么webpack类似于什么?java的知识虽然很难完全匹配,但还是尽量匹配,方便理解。首先我们回顾一下maven有三种生命周期(default、clean和site生命周期)。我们经常使用默认的生命周期,它包括多个阶段(参考):验证(validate)来验证项目是否正确以及所有必要的信息是否可用。initialize初始化构建状态,例如设置属性或创建目录。generate-sources生成编译中包含的任何源代码。流程源(process-sources)流程源代码,如过滤任意值。generate-resources生成包中包含的资源。进程资源(process-resources)复制进程资源到目标目录,准备打包。compile编译项目的源代码。从编译后处理生成的process-classes文件,例如对Java类的字节码增强。生成测试源(generate-test-sources)生成编译中包含的任何测试源。ProcessTestSources(process-test-sources)处理测试源代码,例如过滤任何值。生成测试资源(generate-test-resources)创建测试资源。处理测试资源(process-test-resources)将资源复制并处理到测试目标目录中。测试编译(test-compile)将测试源代码编译到测试目标目录中。进程检查类(process-test-classes)处理测试编译生成的文件,比如Java类的字节码增强。对于Maven2.0.5及更高版本。测试(测试)使用合适的单元测试框架运行测试。这些测试不应要求打包或部署代码。prepare-package在实际打包之前,执行必要的操作来准备包。这通常会导致包的打包句柄版本。(Maven2.1及更高版本)包(package)将编译后的代码打包成它的可分发格式(例如JAR)。预集成测试(pre-integration-test)在执行集成测试之前执行所需的操作。这可能涉及设置所需环境等事情。集成测试(集成测试)如果需要,可以处理包并将其部署到可以运行集成测试的环境中。集成测试后执行集成测试后执行所需的操作。这可能包括清理环境。验证运行任何检查以验证包是否有效并符合质量标准。install将包作为本地其他项目的依赖项安装到本地存储库中。部署在集成或发布环境中完成,将最终包复制到远程存储库以与其他开发人员和项目共享。每个阶段对应默认插件执行,其中“package”阶段修改频率最高,如:maven-assembly-pluginsrc/main/assembly/dep.xmlcreate-archivepackagesingle记住maven的这几个阶段,就很容易理解webpack,gulp,grunt,他们是一套构建phases工具,最终效果就是打包。由于maven可以自定义stage的插件,nodejs也可以指定不同的构建工具。说到这里,webpack、gulp、grunt可以比作maven的舞台,也可以比作maven、ant、gradle的不同构建工具。安装webpack(全局),注意:从webpack4.X开始,需要安装webpack-cli依赖,所以使用这个命令npminstallwebpackwebpack-cli-gnpminstallwebpackwebpack-cli-g查看webpack版本gucci@gucci-PC:~$webpack-v4.16.5脚手架(scaffolding)比如vue脚手架vue-cli,具体可以参考https://www.npmjs.com/package...在学习webpack的时候发现,配置文件太多,结合vue,配置层出不穷。从头开始编写配置文件是不可靠的。于是就有了脚手架,这个跟maven的archetype很像,因为不只是vue,react也有脚手架。安装vue脚手架(全局)npminstall--globalvue-cli查看版本:gucci@gucci-PC:~$vue-V2.9.6新建项目gucci@gucci-PC:/mydata/test$vueinitwebpackjc-demo-vue-cli?项目名称jc-demo-vue-cli?项目描述Vue.js项目?作者JevonCode?Vue独立构建?安装vue路由器?是的?使用ESLint来检查你的代码?是的?选择一个ESLint预设标准?设置单元测试是吗?选择一个测试运行器笑话?使用Nightwatch设置端到端测试?是的?我们应该在项目创建后为您运行`npminstall`吗?(推荐)novue-cliGenerated"jc-demo-vue-cli".#项目初始化完成!#===========================开始:cdjc-demo-vue-clinpminstall(或者如果使用yarn:yarn)npmrunlint----fix(或者对于yarn:yarnrunlint--fix)npmrundev可以找到文档在https://vuejs-templates.github.io/webpack安装(下载)依赖npminstall注意:如果npm出现异常,使用cnpmnpminstall-gcnpm--registry=https://registry.npm。淘宝网综上所述,我们会发现人家说js技术迭代快,学不会,但是站在我们后端开发者的角度,我们会发现它的很多思想都来自于构建、模块化等后端思想.计算机先驱AlanJayPerlis曾说过“如果一门语言不能影响你的编程思维,它就不值得学习”。不影响您对编程的思考方式的语言不值得了解。虽然很多前端的思想来源是在后端,但是也有它的思想,影响着后端(我说的是个人学习,不是技术开发)。比如函数式编程,java的lambda等。js首先给我的就是hacking的精神,用已有的语法去完成它的语法不支持的部分。学了ES6之后,发现根本就“没有规矩”。本来想做个笔记记录一下,结果发现自己抄了整本书。好像只能自己记大纲,等真正用到的时候再打开看。来仔细看看。