Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 了解",;“类型”;a<;脚本>;标签_Javascript_Html_Babeljs_React Jsx - Fatal编程技术网

Javascript 了解",;“类型”;a<;脚本>;标签

Javascript 了解",;“类型”;a<;脚本>;标签,javascript,html,babeljs,react-jsx,Javascript,Html,Babeljs,React Jsx,我正在寻找html标记中type属性的清晰解释。在我作为一名网络开发人员的职业生涯中,我从互联网上得到的指导是: 只需编写,然后将javascript放入其中 在html5中,只需编写,因为文本/javascript是默认值 在很长的一段时间里,我很天真,只是按照别人告诉我的去做。现在我正在学习ReactJS,这里有一组新的说明: 在文件顶部包含babel脚本 现在写 瞧!现在,您可以在该标记中编写一些看起来很像Javascript的东西,但它还有一系列很酷的额外特性 我想了解将type

我正在寻找html
标记中
type
属性的清晰解释。在我作为一名网络开发人员的职业生涯中,我从互联网上得到的指导是:

  • 只需编写
    ,然后将javascript放入其中
  • 在html5中,只需编写
    ,因为
    文本/javascript
    是默认值
在很长的一段时间里,我很天真,只是按照别人告诉我的去做。现在我正在学习ReactJS,这里有一组新的说明:

  • 在文件顶部包含
    babel
    脚本
  • 现在写
  • 瞧!现在,您可以在该标记中编写一些看起来很像Javascript的东西,但它还有一系列很酷的额外特性
我想了解将
type='text/babel'
添加到
script
标记背后的魔力。我知道javascript是在浏览器中实际运行的唯一语言,那么额外属性、babel脚本和您在其中编写的代码之间的关系是什么呢。那个标签不知怎么找到了巴别塔的脚本并对它做了些什么吗?这是允许在javascript执行之前对脚本标记中的文本进行预处理的基本browser/js功能吗?我还应该知道什么


这个问题的目标是消除神秘性。

如果浏览器注册了MIME类型(历史上可能是VBScript或PerlScript的情况),那么浏览器将通过相应的解析器/编译器/解释器等运行MIME类型

否则,它只是DOM中的一个元素,其中有一个文本节点

其他代码(例如用JavaScript编写的代码)可以找到DOM元素,读取其内容,然后对其执行操作。巴贝尔就是这样做的

我想了解将type='text/babel'添加到脚本标记背后的魔力

没有真正的魔力:页面上包含的Babel脚本会查找这些元素,并动态地将它们传输到ES5中,然后让浏览器运行生成的ES5代码。在脚本元素上设置
类型
,可以做两件事:

  • 阻止浏览器尝试直接运行它们,以及

  • 为Babel脚本标识它们

  • 关于
    脚本
    上的
    类型
    ,通常来自:

    type
    属性提供脚本语言或数据格式。如果属性存在,则其值必须是有效的MIME类型。不能指定字符集参数。如果属性不存在,则使用默认值
    “text/javascript”

    然后在稍后解释如何处理
    脚本
    元素时:

    如果用户代理不支持脚本块类型为此
    script
    元素提供的脚本语言,则此时用户代理必须中止这些步骤。脚本未执行


    值得一提的是,如何在浏览器中传输:

    在浏览器中编译有一个相当有限的用例,因此如果您在生产站点上工作,您应该在服务器端预编译脚本。有关更多信息,请参阅


    (在他们说“编译”的地方,我们大多数人会说“传输”。

    不,浏览器对
    type=text/babel
    没有任何作用。主流浏览器只理解
    type
    属性中支持的MIME类型,并且总是默认为ECMAScript(JavaScript)。到目前为止,大多数浏览器仍不完全兼容ES6

    Babel是一个编译器,它将
    中包含的任何ES6代码编译成ES5JavaScript,这是大多数现代浏览器都能理解的版本。运行babel代码时,浏览器会忽略babel脚本。Babel是一个查找它、将代码转换为ES5并告诉浏览器运行它的库