首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

「 giao-js 」用js一个js解释器

前言 在这篇文章中,我们将通过 JS 构建我们自己 JS 解释器,用 JS JS,这听起来很奇怪,尽管如此,这样做我们将更熟悉 JS,也可以学习 JS 引擎是如何工作!...,接下来我们来动动手松松筋骨吧,实现一个 Mini Js Interpreter~ 实践准备 Acorn.js A tiny, fast JavaScript parser, written completely...一个完全使用 javascript 实现,小型且快速 javascript 解析器 本次实践我们将使用 acorn.js ,它会帮我们进行词法分析,语法解析并转换为抽象语法树。...: Expression | null; } Identifier 顾名思义,标识符节点,我们 JS 时定义变量名,函数名,属性名,都归为标识符。...,或者戳源码地址 结语 giao-js目前只实现了几个语法,本文只是提供一个思路。

46.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

用原生js一个多动症简历

用原生js一个"多动症"简历 预览地址 源码地址 最近在知乎上看到@方应杭用vue写了一个会动简历,觉得挺好玩,研究一下其实现思路,决定试试用原生js来实现。...会动简历实现思路 这张会动简历,就好像一个打字员在不断地录入文字,页面呈现动态效果。又好像一个早已经录制好影片,而我们只是坐在放映机前观看。...使用es6写法 使用部分原生dom操作api standard.js(代码风格约束利器) 目录结构如下 最重要几个模块分别是resumeEditor(简历编辑模块) 、 stylesEditor(...简历样式编辑模块) 、 以及vQuery(封装dom操作模块) 最后app.js(入口模块)再将几个模块功能结合起来完成整个项目。...但是含有一个问题,如果涉及到很多个异步操作,我们是很难通过上面的方式将异步流程管理起来

6.8K70

用原生js一个多动症简历

用原生js一个"多动症"简历 预览地址 源码地址 最近在知乎上看到@方应杭用vue写了一个会动简历,觉得挺好玩,研究一下其实现思路,决定试试用原生js来实现。...会动简历实现思路 这张会动简历,就好像一个打字员在不断地录入文字,页面呈现动态效果。又好像一个早已经录制好影片,而我们只是坐在放映机前观看。...使用es6写法 使用部分原生dom操作api standard.js(代码风格约束利器) 最重要几个模块分别是resumeEditor(简历编辑模块) 、 stylesEditor(简历样式编辑模块...) 、 以及vQuery(封装dom操作模块) 最后app.js(入口模块)再将几个模块功能结合起来完成整个项目。...但是含有一个问题,如果涉及到很多个异步操作,我们是很难通过上面的方式将异步流程管理起来

5.3K20

前端|利用js实现在日历中签到效果

效果介绍 日历在手机软件里是非常常见一个功能,几乎每一个手机都有一个自带手机日历软件。签到功能也是特别常用,学习通、淘宝、包括学校使用热水软件U易也都有运用。...在一些签到获取积分(或者其他奖励)软件中,签到和日历功能常常是捆绑使用。我们今天要实现也是签到功能和日历捆绑在一起效果。 本次实现效果如下图1.1: ?...关于日历我们需要实现效果有:①判断某一天是星期几;②判断某个月有几天;③判断某一年是平年还是闰年(即二月份是28天还是29天); 关于签到需要实现更多是样式变化:①点击签到之后,签到按钮要发生变化...,从签到变成已签到;②当签到成功后,页面利用模态框显示“签到成功字样”,如图2.1所示;③当签到成功后日历中对应日期要发生相应样式变化; ?...图2.1 签到成功效果图 实现过程 概述实现步骤:①创建相应文件,并在HTML5中引入;②利用HTML5代码对页面框架进行搭建;③利用css对“签到”前后样式变化进行调整;④利用JavaScript

5.4K20

实战 | 用原生js一个多动症简历

原理分两个部分 1、页面能看见不断跳动着增加文字,控制 2、页面的布局效果由藏在"背后"style标签完成 想象一下你要往一张网页每间隔0.1秒增加一个啊字,是不是开个定时器,间断地往body里面塞啊...2、使用yarn来处理依赖包管理 3、使用es6写法 4、使用部分原生dom操作api 5、standard.js(代码风格约束利器) 目录结构如下 最重要几个模块分别是resumeEditor...(简历编辑模块) 、 stylesEditor(简历样式编辑模块) 、 以及vQuery(封装dom操作模块) 最后app.js(入口模块)再将几个模块功能结合起来完成整个项目。...可以看出它做事就是封装一个构造函数Vquery,它实例会有一些简单dom操作方法,最后为了能够像jQuery那样使用$().funcName形式去使用,我们导出了一个匿名函数,在匿名函数中去new...但是含有一个问题,如果涉及到很多个异步操作,我们是很难通过上面的方式将异步流程管理起来。于是我们需要做下面一件事 内部next函数就是 thunk 回调函数。

4K10

一个js接口http调试程序

公司有非常多手机app项目。手机app又要常常訪问后台提交与查询数据。 所曾经端app与后台开发与測试过程中接口调试是一个常常要做工作。...而每当出现一个BUG,前端appproject师与后台project师往往要相互合作才干定位bug到底在那里。而非本项目的人往往还难以帮上忙(必需要读懂别人程序,等等。...开发们都懂…) 所以自己利用了业余时间用js+hta方式实现了一个简单接口调试程序.能够由非开发者对比接口文档就能够进行接口调试和測试。...下面是程序界面 这是一个机票程序接口调用程序,在这个程序中能够调试全部接口 左側是各个接口命名,每点击左側接口名,右側url和req(请求參数)会对应变为该接口URL和參数样例,点以下...程序小巧(10-100k) 该程序入门简单(仅仅须要懂一点html语法与js就可以), 改动easy(用记录本打开就能改动), 执行easy(windows环境下双击执行就可以) 实在是居家旅行,出差工作

1.9K10

如何一个 JS 运行时

本文简单介绍一下如何一个 JS 运行时,相比操作系统、编译器来说,一个 JS 运行时理论上并不是一个事情,但是一个优秀且功能齐全运行时并不是一个容易事情。...JS 引擎 一个 JS 运行时,首先就必须需要一个 JS 引擎来处理 JS,大部分 JS 运行时都是基于 V8,当然你也可以使用其他 JS 引擎。...所以首先需要选择一个 JS 引擎,然后下载代码,编译成功。有了 JS 引擎,就可以通过它提供一些 API 实现一个可以执行 JS 代码软件。...事件循环 有了之前基础后,接下来我们就需要实现一个事件循环,因为有些拓展功能 API,是同步执行,但是有些是不能同步执行,比如文件、网络。所以我们需要一个事件循环来处理异步任务。...但是还有一个重要部分需要实现,那就是模块加载器,内置功能可以通过挂载到全局变量方式来实现,这样用户就不需要通过模块加载器方式来使用拓展功能,但是用户 JS,还是需要一个模块加载器。

1.7K30

绕过JS爬虫

其中,东方财富网有许多数据,其中有一个是机构调研数据。      ...这种带有js网站抓取其实不是那么简单,基本分为那么几种方法,一种是观察页面,有的会有json数据,有的有js代码可以解析目标的url;一种是使用渲染工具;还有一种就是用工具来点击相关button,来抓取...今天我们使用是第三种。 ?       我们希望爬取是表格中数据,但是如果我们仔细看一下html代码,会发现,这其实是js生成,下面这张图是源代码截图。 ?      ...然后我们就点击第二页、第三页不断来观察究竟js代码访问了什么后台url。...至于最后面一个数字,目前猜测是一个计数标记,所有的api中设置一致就可以了。       接下来我们就可以用urllib来获得api背后json内容了,比如是这样: ?

14.9K20

js插件教程

;我为了方便都写到一个html中了;请把这个script标签中内容单独写在一个js文件里 //整个插件写在一个立即执行函数里;就是function(){}();函数自执行;保证里面的变量不会与外界互相影响...号(叹号)或者;(分号)这不是写错了,为了防止那个二货js结束没有分号;而可能发生报错 /* ;function(win,doc,$,undefined){ }(window...//我们随便一个插件吧 比如你要点击按钮 添加input值到 div里 var addHtml = function(demo,btn){//插件名,调用时候直接new一下插件名就行了并传参数或者传对象...} //;给构造函数addHtml对象原型里添加属性(方法) addHtml.prototype = {//给函数方法;这里可能不止一个函数;你还记得你在全局里一个function...吗;贼乱; //找也不好找;把一个个函数都写到对象属性里;调用函数就直接调用对象属性; constructor:addHtml,//构造器指向构造函数;这行其实不没啥毛病

35.1K10

如何用JS一个table组件 | 作业讲解

第二种,从JavaScript模块化开发角度来讲,一个function就是一个模块,例如: function isGet(){ //get... } 这个函数就是一个JS模块,它是有逻辑。...一个组件可以说它是一个JS模块,但一个JS模块,却未必是一个组件。...所以你会看到一个组件里面包含了许多函数、方法或是许多JS文件。 这就引出下一个问题,组件组织。也就是单一功能再细分,用笔先写出一个点。。...然后定义一个函数,createTableUI(),,, (这东西真累,这么多字了,开头还没写完,还不一定有人爱看。...还是吐槽文舒服啊,一会就写完了) 简短节说啊,,把刚才config进来,就这样:createTableUI(config) 然后createTableUI伪代码: createTableUI(c)

4.5K50

前端-用 JS 一个同 Excel 表现智能填充算法

排除了AI加成,发现这个功能其实也可以通过数学理论和简单代码来实现。经过一番折腾,终于用JS实现了大致功能,然后我把它名为 smart-predictor。...可以注意到,我会提取每一个元素纯数字部分出来,然后把其余部分通过一个数组储存起来。...2、同一组数据应该是连续,否则的话就要把不连续数据扔到一个组去。...代码请戳:linearRegression.js 通过这条公式,我们可以轻易得到数组 [1,3]斜率和偏移量为 {a:2,b:1},然后就可以知道以后数据走向将会是 [5,7,9,...]。...Predictor 借助线性回归力量,我们可以通过设置预测次数,挨个挨个地对每一个分组数据进行预测,然后再把它们组合到一起形成一个结果数组。

1.5K40

如何一个简单node.js c++扩展

如何一个简单node.js c++扩展 node 是由 c++ 编写,核心 node 模块也都是由 c++ 代码来实现,所以同样 node 也开放了让使用者编写 c++ 扩展来实现一些操作窗口...如果大家对于 require 函数描述还有印象的话,就会记得如果不文件后缀,它是有一个特定匹配规则: LOAD_AS_FILE(X) 1....为什么要写 c++ 扩展 可以简单理解为,如果想基于 node 一些代码,做一些事情,那么有这么几种选择: 一段 JS 代码,然后 require 执行 一段 c++ 代码,编译后 require...但有的时候可能纯粹 JS 满足不了我们需求,也许是工期赶不上,也许是执行效率不让人满意,也有可能是语言限制。...简单总结一下, c++ 扩展大概有这么几个好处: 可以复用 node 模块管理机制 有比 JS 更高效执行效率 有更多 c++ 版本轮子可以拿来用 怎么去一个简单扩展 node 从问世到现在已经走过了

1.9K30

js】如何正确代码注释?

错误注释 你注释是不是这样? //时间戳日期格式化函数 function formTime(time,isyear){ } 亦或者是这样?.../* 时间戳日期格式化函数 */ function formTime(time,isyear){ } 简单变量声明之类内容可以进行简单注释,但是函数就不能这样做了,要知道注释作用是一种为了让代码更易读...、易维护、易理解,起到提示作用,上面的两个注释都是正确,但是它起到作用太低了,在正式工作中我们往往会协同开发,这种注释是万万不可。...,内容详细了很多,当然,不只是单单内容多了,如果只是内容多了那么/* */段落注释同样也可以,那么它还有什么优点呢?...npm install jsdoc -g 基本使用 jsdoc 文件名 其他使用方式可以去官网查看 jsdoc 33.js 执行完此命令,会生成一个out文件夹,查看里面的index页面即可,右边侧边栏会显示函数使用

15320
领券