一遍又一遍执行雷同或者类似的代码
循环条件: 管制循环的执行
循环体: 要反复执行的代码
(1)切换命令行的门路
如果有盘符的变动 盘符名称: 回车
②在要进入的目录的空白区域,按住shift,单击鼠标右键,抉择’在此处关上powershell窗口’
查问字符串模块用于操作查问字符串的工具
parse() 将查问字符串解析为对象
练习:将以下查问字符串数据解析为对象
显示为以下格局 商品名称:xxx 价格:xxx元
协定 域名/IP地址 端口号 文件在服务器的门路 查问字符串
练习:获取以下URL中的传递的数据
}
runtime(运行时)在计算机世界中并不少见,或者说基本上所有的语言都需要一个运行时。计算机的能力,比如操作系统的网络,io操作,文件系统等能力,单纯的使用js是无法运用的。js本声就是一门很简单的解释型脚本而已。他并没有能力触碰操作系统。这也就是我们常常把js比作一把无比华丽的宝剑,但是却找不到剑柄。
而js目前的主要运行时有两个,浏览器和nodejs
怎么去实现简单的运行时
这里有一个著名的轮子叫quickjs
怎么样可以触碰到底层呢?这个问题和怎么把大象装到冰箱里一样。其实很简单,js的解释器,也就是我们所说的引擎,对于c++(c)开发者来说和其他的库没有什么不同
- 将引擎的源码编译成库文件
- 编译自己的c源码,经过编译,连接,装载。。。(开始背书)
那么quickjs就是做的这件事,只需要一行make&&sudo make install就可以生成可执行的c代码,就这么简单,而quickjs做的事也很简单,就是我们上面说的,把js代码转换成机器码喂给js引擎而已,然后把他们的文件结构整理成unix规范
所以并没有什么黑魔法,就只是拿胶水站在一起而已。。。。
我们把上面生成的c代码编译运行之后就可以在控制台看到“hello world”
有了这个工具我们可以做什么呢?比如说一些计算密集型的任务,就可以直接交给c去做
要想在 QuickJS 引擎中使用上面这个 C 函数,大致要做这么几件事:
把 C 函数包一层,处理它与 JS 引擎之间的类型转换。
将包好的函数挂载到 JS 模块下。
将整个原生模块对外提供出来。
这一共只要约 30 行胶水代码就够了,相应的 fib.c 源码如下所示:
// 包一层,处理类型转换 // 将包好的函数定义为 JS 模块下的 fib 方法 // 模块初始化时的回调 // 最终对外的 JS 模块定义 上面这个 fib.c 文件只要加入 CMakeLists.txt 中的 add_executable 项中,就可以被编译进来使用了。这样在原本的 main.c 入口里,只要在 eval JS 代码前多加两行初始化代码,就能准备好带有原生模块的
这样,我们就能用这种方式在 JS 中使用 C 模块了:
所以jit是一个很伟大的事,他大幅提高了js的效率。甚至可以和原生媲美
}