对于前端开发人员,掌握Node.js仍然是一项宝贵技能。尽管Deno为服务器端JavaScript提供了替代方案,但Node.js的广泛生态系统确保其持续相关性。本文假设您熟悉基于浏览器的JavaScript,并希望使用node.js探索服务器端的开发。对于Node.js和NPM初学者,Jamie Corkhill在Smashing Magazine上的“入门”是一个很好的资源。
异步JavaScript:关键区别
浏览器JavaScript通常最少使用异步代码(例如, fetch
API调用)。但是,Node.js几乎总是需要异步编程。它的单线读取事件循环依赖于异步回调,是其设计的基础。这种异步至上的方法对Node.js的成功至关重要,但它为那些习惯于同步编码的人提供了学习曲线。
构建测验应用程序示例
让我们构建一个简单的测验应用程序来说明node.js概念。 GitHub上提供了更完整的版本。该应用程序使用带有表格,问题和答案表的SQLite数据库。每个问题都有多个答案,其中只有一个是正确的。 Sqlite缺乏布尔类型;我们将0用于false,而为true 1。
首先,初始化NPM并安装sqlite3
软件包:
npm init -y NPM安装sqlite3
将"type":"module"
添加到您的package.json
以启用ES6模块。创建migrate.js
来设置数据库表:
// migrate.js 从“ sqlite3”导入sqlite3; 令db = new sqlite3.database(“ quiz.db”); db.serialize(function(){ // ...(数据库架构创建和初始数据插入)... }); db.close();
该脚本可以创建表并使用示例数据填充它们。使用node migrate.js
运行它。
导航异步挑战
让我们查询数据库。在index.js
中,我们导入sqlite3
,创建一个数据库对象,然后使用get
函数:
// index.js 从“ sqlite3”导入sqlite3; 令db = new sqlite3.database(“ quiz.db”); db.get(``select * seal * where quizid = 0`,(err,row)=> { 如果(err){ Console.Error(err.message); } console.log(row); db.close(); });
这将测验数据打印到控制台。
避免回调陷阱
让我们创建一个函数getQuiz(id)
以通过ID检索测验。仅由于异步执行而从回调中返回结果是不正确的:
//不正确 - 避免这种情况! 功能getquiz(id){ // ...(带回调的数据库查询)... 返回结果; //结果将不确定! }
正确的方法使用回调来处理异步结果:
函数getquiz(id,回调){ // ...(数据库查询,用结果调用回调)... } getquiz(0,(quiz)=> { console.log(quiz); });
超越简单回调:承诺和异步/等待
连锁多个异步电话会导致“回调地狱”。承诺提供更清洁的解决方案:
函数获取(params){ // ...(数据库查询包裹在承诺中)... } 获取({表:“答案”,列:“ andersId”,value:2}) 。然后(...) 。然后(...) 。然后(...) 。抓住(...);
异步/等待进一步简化异步代码,使其类似于同步代码:
异步函数printquizfromanswer(){ const答案=等待get({表:“答案”,列:“答案”,value:2}); // ...(类似地等待随后的通话)... } printquizfromanswer();
顶级等待(最近的Node.js版本中可用)允许更简洁的代码。
通过SQL连接优化
为了提高效率,请使用SQL连接在单个查询中检索相关数据:
函数quizfromanswer(andersID,呼叫){ // ...(SQL加入查询以获取答案,问题和测验数据)... }
这减少了数据库调用的数量。
node.js apis和约定
Node.js引入了用于数据库交互,文件系统访问,HTTP服务器等的新API。了解Node.js约定,包括package.json
文件和错误优先回调,至关重要。 COMPORJS模块和ES模块之间的差异也需要注意。
服务器端的注意事项
Node.js服务器端开发需要仔细处理异常和安全漏洞,与客户端JavaScript不同,错误通常会影响单个用户。
结论
Node.js使前端开发人员充分利用其JavaScript技能进行服务器端开发。尽管异步性质呈现出学习曲线,但并发和庞大的生态系统的好处使其成为强大的工具。请记住要熟悉异步JavaScript概念,Node.js API和安全性最佳实践。
以上是将节点JavaScript与浏览器中的JavaScript进行比较的详细内容。更多信息请关注PHP中文网其他相关文章!

文章讨论了CSS保证金属性,特别是“保证金:40px 100px 120px 80px”,其应用程序以及对网页布局的影响。

本文讨论了CSS边境属性,重点是自定义,最佳实践和响应能力。主要论点:边境 - 拉迪乌斯(Border-Radius)对响应式设计最有效。

本文讨论了CSS中评论的使用,详细介绍了单线和多行评论语法。它认为注释可以增强代码可读性,可维护性和协作,但如果无法正确管理,可能会影响网站性能。

文章讨论了将CSS添加到HTML的三种方法:内联,内部和外部。分析了每种方法对网站性能和适合初学者的适用性的影响。(159个字符)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

记事本++7.3.1
好用且免费的代码编辑器

禅工作室 13.0.1
功能强大的PHP集成开发环境

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Atom编辑器mac版下载
最流行的的开源编辑器