curl 与 curve 在使用上有何区别
发布时间:2025-05-21 23:55:07 发布人:远客网络
一、curl 与 curve 在使用上有何区别
1、Curl是为了实现富客户端(rich client)应运而生的Web开发语言,为了实现真正有益的富客户端,它能有效地实现各种复杂处理,具备提供高信赖、高扩展性、高维护性的应用程序所应拥有的各种编码能力。其拥有在Web环境上便利的分配、管理以及低廉的维护费以及在C/S环境上的用户便利性、迅速的应答,华丽的图像显示等重多优点于一身。
2、 Curl是由美国国防部高级研究项目代理资助,马萨诸塞州科技学院的David A. Kranz开发的Web开发语言, HTML语言的创建者Tim Berners-Lee也参与其中,并扮演了重要的角色。
3、该语言的目标是用一种统一的面向对象的语言代替HTML、CSS、JavaScript等;仅使用Curl便可开发出Web应用的各种软件;Curl程序在浏览器中运行,并且因为它以类似JRE的形式提供了客户端运行环境Surge RTE,能够轻松开发出日益流行的Rich Client应用程序。
二、详解配置VS Code/Webstorm来调试JavaScript
本文主要介绍如何使用Node Inspector配置 VS Code和 Webstorm进行 JavaScript和 TypeScript应用调试。为了便于阅读,文中采用了意译而非直译的方式进行翻译。文章中的示例代码位于 GitHub仓库,鼓励读者自行克隆并操作。对于文中需要使用的命令,已编写成脚本,如果未克隆代码,可参考脚本使用。启动应用,访问 localhost:3000/[n]查看斐波拉契序列。
为了演示 JavaScript和 TypeScript调试,编写了 index.ts文件,并通过 tsc命令生成对应的 JavaScript版本。JavaScript版本可能会显得有些杂乱。接下来将使用两种模式进行调试:--inspect和--inspect-brk。两种模式的区别在于,--inspect-brk在接入 Chrome DevTools等调试工具前不会启动应用,并且会在用户代码的第一行暂停。
在使用--inspect模式运行 Node.js应用时,注意以下两点:
1.可以通过 curl 获取相关信息,更多详情请参考 legacy-debugger。
2.会启动 WebSocket服务器监听 9229端口,并且每次服务重启,UUID会改变。
使用 Chrome DevTools进行 JavaScript调试时,首先运行命令并查看结果。将看到一个 WebSocket服务器启动并监听 9229端口。这里提及,Chrome可以自动发现正在运行的会话。点击 Chrome://inspect中的 Inspect按钮开始调试。一个新窗口会打开,允许访问调试文件、添加断点。
若使用 访问会话信息,将发现两个版本的 TypeScript文件:一个带标记 [sm]的对应 source map,另一个不带标记。调试时应选择带 [sm]标记的文件。对于线上调试,推荐使用 Fundebug等工具。
使用 Visual Studio进行 JavaScript调试,选择要调试的目标文件,点击 Debug按钮(Mac: Shift+Cmd+D),然后运行即可。配置完成后,可在控制台执行,使用自动补全功能设置 UUID,然后在控制台运行调试。
若在控制台运行 TypeScript,需配置 launch configuration,指定 UUID,并通过访问 ws://127.0.0.1:9229获取会话状态。确保配置好后,通过播放按钮启动。
使用 Visual Studio进行 TypeScript调试,配置"type":"node"时,需采用 ts-node将 TypeScript代码编译,或指定 runtimeExecutable为 NPM。在控制台运行 TypeScript代码的步骤与 JavaScript类似。
在 WebStorm中调试 JavaScript,选择 Run/Debug Configurations,新建配置并命名,配置 JavaScript file为入口文件,即可运行调试。对于 TypeScript,配置几乎与 JavaScript相同,但在 Node Parameters中,需填写--inspect--require ts-node/register。
本文旨在提供调试指南,希望帮助读者在开发过程中轻松调试 JavaScript和 TypeScript应用。祝您调试愉快!
三、requirejs模块化编程怎么理解
目前,通行的Javascript模块规范共有两种:CommonJS和AMD。
2009年,美国程序员Ryan Dahl创造了node.js项目,将javascript语言用于服务器端编程,这标志”Javascript模块化编程”正式诞生。
在浏览器环境下,没有模块也不是特别大的问题,毕竟网页程序的复杂性有限;但是在服务器端,一定要有模块,与操作系统和其他应用程序互动,否则根本没法编程。
node.js的模块系统,就是参照CommonJS规范实现的。在CommonJS中,有一个全局性方法require(),用于加载模块。
假定有一个数学模块math.js,就可以像下面这样加载。
var math= require('math');
然后,就可以调用模块提供的方法:
var math= require('math');
因为这个系列主要针对浏览器编程,不涉及node.js,所以对CommonJS就不多做介绍了。我们在这里只要知道,require()用于加载模块就行了。
AMD是”Asynchronous Module Definition”的缩写,意思就是”异步模块定义”。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。
define(id?, dependencies?, factory);
dependencies:所依赖的模块,可以省略。
factory:模块的实现,或者一个JavaScript对象。
AMD也采用require()语句加载模块,但是不同于CommonJS,它要求两个参数:
第一个参数[module],是一个数组,里面的成员就是要加载的模块;第二个参数callback,则是加载成功之后的回调函数。如果将前面的代码改写成AMD形式,就是下面这样:
require(['math'], function(math){
math.add()与math模块加载不是同步的,浏览器不会发生假死。所以很显然,AMD比较适合浏览器环境。
目前,主要有两个Javascript库实现了AMD规范:require.js和curl.js。本系列的第三部分,将通过介绍require.js,进一步讲解AMD的用法,以及如何将模块化编程投入实战。
require.js加载的模块,采用AMD(异步模块定义规范)规范。也就是说,模块必须按照AMD的规定来写。
1、实现js文件的异步加载,避免网页失去响应
2、管理模块之间的依赖性,便于代码的编写和维护
<script src="js/require.js" data-main="js/main"></script>
data-main属性的作用是,指定网页程序的主模块。在上例中,就是js目录下面的main.js,这个文件会第一个被require.js加载。由于require.js默认的文件后缀名是js,所以可以把main.js简写成main。
require(['moduleA','moduleB','moduleC'], function(moduleA, moduleB, moduleC){
require.config用来配置一些参数,它将影响到requirejs库的一些行为。
require.config的参数是一个JS对象,常用的配置有baseUrl,paths等。
这里配置了paths参数,使用模块名“jquery”,其实际文件路径jquery-1.7.2.js(后缀.js可以省略)。
我们知道jQuery从1.7后开始支持AMD规范,即如果jQuery作为一个AMD模块运行时,它的模块名是“jquery”。注意“jquery”是固定的,不能写“jQuery”或其它。
注:如果文件名“jquery-1.7.2.js”改为“jquery.js”就不必配置paths参数了。
如果将jQuery应用在模块化开发时,其实可以不使用全局的,即可以不暴露出来。需要用到jQuery时使用require函数即可。
require()函数接受两个参数。第一个参数是一个数组,表示所依赖的模块,上例就是['moduleA','moduleB',
'moduleC'],即主模块依赖这三个模块;第二个参数是一个回调函数,当前面指定的模块都加载成功后,它将被调用。加载的模块会以参数形式传入该函数,从而在回调函数内部就可以使用这些模块。