有没有把html转成ast的js库

JavaScript052

有没有把html转成ast的js库,第1张

有把html转成ast的js库。根据查询相关公开信息显示:在DOM环境下可以方便的编辑DOM不同,如果只有字符串,想要编辑,要对两个html进行diff操作。在virtualdom中,可以通过node的type来知道这个节点是否是同一个,只有纯字符串,这个确认动作就会比较麻烦。可以将html字符串转化为一个token序列,并拼成一个ast。

var con = document.getElementById("con")

 

(function(){

    // 监听运动传感事件,查看是否支持硬件运动

    if (window.DeviceMotionEvent) {

        window.addEventListener('devicemotion', deviceMotionHandler, false)

    } else {

        alert("您的设备不支持硬件调用")

    }

 

    // 变量初始化

    var x = 0,

     y = 0,

     z = 0,

    lastX = 0,

    lastY = 0,

    lastZ = 0,

curTime = 0,

lastTime = 0,

diffTime = 0,

    speed = 0

 

    // 设置一个阀值

    var SHAKE_THRESHOLD = 800 // 设定摇晃的阈值为600 运行相应操作

 

    /*

     * 功能:测算三个方向重力加速度,达到一定值进行相应操作

     * 作者:HTML5学堂、刘国利、陈能堡

     *

     */

    function deviceMotionHandler(eventData){

        var acceleration = eventData.accelerationIncludingGravity

 

        // 获取当前时间

        curTime = new Date().getTime()

        // 计算时间差,当这个差值大于一定值执行计算三个方向的速度

        if ((curTime - lastTime) > 100) {

            // 记录上一次的时间

            diffTime = curTime - lastTime

            lastTime = curTime

 

            // 获取当前三个方向的值

            x = acceleration.x

            y = acceleration.y

            z = acceleration.z

 

            // 计算速度,为了防止出现负数,进行绝对值

            speed = Math.abs((x + y + z - lastX - lastY - lastZ) / diffTime * 8000)

            if (speed > SHAKE_THRESHOLD) {

                alert("我实现摇一摇了")

            }

 

            // 记录上一次三个方向的值

            lastX = x

            lastY = y

            lastZ = z                    

        }

    }

})()

资料来源HTML5学堂。