搜索
首页web前端css教程将节点JavaScript与浏览器中的JavaScript进行比较

将节点JavaScript与浏览器中的JavaScript进行比较

对于前端开发人员,掌握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中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
保证金是什么:40px 100px 120px 80px表示?保证金是什么:40px 100px 120px 80px表示?Apr 28, 2025 pm 05:31 PM

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

什么是不同的CSS边框特性?什么是不同的CSS边框特性?Apr 28, 2025 pm 05:30 PM

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

什么是CSS背景,列出属性?什么是CSS背景,列出属性?Apr 28, 2025 pm 05:29 PM

本文讨论了CSS背景属性,它们在增强网站设计方面的用途以及避免的常见错误。重点是使用背景大小的响应式设计。

什么是CSS HSL颜色?什么是CSS HSL颜色?Apr 28, 2025 pm 05:28 PM

文章讨论了CSS HSL颜色,其在网络设计中的使用以及比RGB的优势。主要重点是通过直观的颜色操纵来增强设计和可访问性。

我们如何在CSS中添加评论?我们如何在CSS中添加评论?Apr 28, 2025 pm 05:27 PM

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

什么是CSS选择器?什么是CSS选择器?Apr 28, 2025 pm 05:26 PM

本文讨论了CSS选择器,其类型和用于造型HTML元素的用法。它比较ID和类选择器,并与复杂的选择器解决性能问题。

哪种类型的CSS持有最高优先级?哪种类型的CSS持有最高优先级?Apr 28, 2025 pm 05:25 PM

本文讨论了CSS优先级,重点是具有最高特异性的内联风格。它解释了特异性级别,覆盖方法和用于管理CSS冲突的工具。

我们可以通过几种方式将CSS添加到我们的HTML文件中?我们可以通过几种方式将CSS添加到我们的HTML文件中?Apr 28, 2025 pm 05:24 PM

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

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

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

热工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

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

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

禅工作室 13.0.1

禅工作室 13.0.1

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

SecLists

SecLists

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

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器