`
yuting_lv
  • 浏览: 111363 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

.jsx和.js文件后缀类型有何区别?

阅读更多

学react,发现有的项目里有.jsx文件,这是什么文件类型?

首先.jsx文件后缀类型(extension)和JSX语法不是一回事。

网上看了下(见末尾参考),结论是:没有什么区别!用哪种后缀都可以,统一代码风格就好。

.jsx文件和.js文件后缀是可以互换的,语法内容完全通用,.jsx文件就是js文件。

那为什么要用.jsx后缀文件名呢?

Valentin D. https://dev.to/yashyashwanth/jsx-extension-5ffe 写道
You can always use .js extension if you want, but it's generally better to use .jsx when your file contains JSX so it's simpler for you to understand what the file will actually contain.

.js --> only js
.jsx --> contains JSX (reactjs.org/docs/introducing-jsx.html)

 还有Airbnb团队支持使用.jsx后缀,理由是:

https://github.com/airbnb/javascript/pull/985#issuecomment-237038754 写道
Thanks, but no. At Airbnb we believe that only JavaScript should ever go in .js files. JSX is not standard JS, and is not likely to ever be - if that changes, then our stance may as well.

You never need extensions whether it's .js or .jsx - and in fact, our linter config requires (or will soon require) that you omit file extensions in all cases.

The reason to differentiate is the same reason we only use stage 3 and above proposals: if it's not standard, it is not javascript.

 认为JSX语法不是标准的js语法,鼓励在.js文件里使用标准JS语法,如果包含JSX语法就用.jsx文件名表明。

同理,使用typescript等扩展语法的js文件,就用.ts扩展名。

https://github.com/airbnb/javascript/issues/1235#issuecomment-428413675 写道
It seems like the react team at facebook and the airbnb team that own the most popular javascript style guide here are at odds with each other over file extensions.

Airbnb team seems adamant about not having any non standard code in a js file re this issue (#1235)

and this pull #985

and names any files with the stuff should have jsx

Facebook team seems adamant that js should be the only extension no matter what is in the file

facebook/create-react-app#87 (comment)

For my (and probably others) future reference when setting up a new js repo with the eslint-config-airbnb

 Facebook团队貌似观点与Airbnb不同,认为统一用.js文件名就可以了,不需要特意区分。

 eslint中使用 eslint-config-airbnb 风格规范的,对包含JSX语法的js文件可能会有些提示?(没有验证过)

 

 基本上用哪个后缀名都一样,只要编译器/打包等构建工具/IDE能正确识别处理好,最后生成正常运行工作的js就好。

对于新手来说,貌似react纯视图层组件,用jsx扩展名更容易识别,区分与其他状态组件(redux)

兼容性上看js文件名方便,不需额外处理识别其他文件名后缀类型,或者统一处理?以不变应万变?= =

 

 参考链接:

https://github.com/airbnb/javascript/pull/985

https://github.com/airbnb/javascript/issues/1235

https://stackoverflow.com/questions/46169472/reactjs-js-vs-jsx

https://dev.to/yashyashwanth/jsx-extension-5ffe

 

 

 

 

分享到:
评论

相关推荐

    wjsjtu-reactjs:将 React jsx 文件传输到 js 文件

    wjsjtu-reactjs v0.0.5入门npm install wjsjtu-reactjs --save-dev ...字首类型: String默认值: "(function(React, window){"后缀类型: String默认值: "})(React, window);"替换词类型: String默认值: "__Reac

    psdexporter-jsx:JSX可从PhotoShop中的图层输出图像,HTML和CSS

    根据PSD图层信息导出图像文件,HTML文件和CSS文件。 如何使用 请使用半角字母数字字符以及“ _”和“-”保存PSD。 如果保存路径具有双字节字符,将发生错误。 根据以下规则组织您的PSD图层以进行导出。 图层集:转换...

    prepost-loader:加载程序为 webpack 源文件添加前缀或后缀字符串

    基于安装 npm install prepost-loader使用示例为所有.jsx文件自动导入React和React.Component 。 // ./webpack.config.jsmodule . exports = { ... module : { loaders : [ { test : / \. jsx $ / , loader : "pre...

    前端项目-aphrodite.zip

    1. **源码文件**:包括JavaScript文件,可能有`.js`或`.jsx`后缀,这些文件展示了如何使用Aphrodite库来定义和应用样式。 2. **CSS或样式文件**:可能有`.css`文件,这些文件可能被Aphrodite库引用,作为基础样式...

    前端项目-soxx.zip

    1. **源代码文件**:JavaScript文件(可能有`.js`、`.jsx`或`.ts`等后缀),用于实现WebSocket通信的逻辑。这些文件可能会包含初始化WebSocket连接、发送和接收消息、处理错误等功能。 2. **示例或测试文件**:可能...

    line-count:Atom编辑器软件包-Show source code

    支持的文件后缀为.. .asm 。C .cc .clj .cljs 。咖啡 .cpp .cr 。CS .css .cxx .erl 。去 .groovy .gs 。H .handlebars .hbs .hpp .hr .hs .html .htm .hx .hxx .hy 。冰镇 .ino 。玉 ....

    omi-electron::rocket:使用Omi.js和Electron.js构建跨平台桌面应用程序,并基于Omi.js和Electron.js构建跨平台的桌面应用

    双击应用图标启动应用,单击应用中间的绿色按钮,指定您的Omi项目的开发目录(一般是src文件夹下),切换到你的编辑工具并在您项目的开发目录下创建或编辑.omi后缀的文件,该文件会自动编译为.js文件 解压缩下载的...

    react学习1

    最后,在同一个目录下创建一个JavaScript文件(如`like_button.js`),编写React组件,并在文件底部使用`ReactDOM.render()`方法将组件挂载到`<div>`元素上。 JSX是React引入的一种语法糖,它允许开发者在...

    webpack-configfile-demo.zip

    extensions: ['.js', '.jsx', '.json'], // 自动尝试这些后缀 }, ``` 这样,我们就可以在import语句中使用`@`代替`src`目录,简化路径引用。 6. **devServer**:在开发阶段,Webpack提供了一个本地开发服务器`...

    vue2商城打包后的文件

    这些文件可能以`.js`或`.vue`后缀,取决于你的配置。 - **manifest.json**:Webpack的manifest文件,记录了各个chunk之间的依赖关系,有助于浏览器进行缓存管理。 2. **JavaScript 文件**:Vue2应用的核心部分,...

    前端项目-jcf.zip

    2. **src** 文件夹:源代码通常位于此目录下,包括JavaScript文件(可能有`.js`或`.jsx`后缀),用于实现自定义表单元素的功能;CSS文件(`.css`)包含了用于样式化的样式规则;还有可能有Sass或Less等预处理器的...

    modelDemo.rar

    例如,"Component"目录下可能存在多个以".jsx"或".vue"为后缀的组件文件。 4. **状态管理**:对于大型应用,状态管理变得至关重要。Redux、Vuex等库提供了一种集中管理应用状态的方式,确保状态的同步和一致。在...

    webpack基本配置案例

    通过使用加载器(Loader),可以将非JavaScript文件转换为可导入的模块。例如,处理CSS文件的加载器: ```javascript module: { rules: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] } ] }, ...

    eslint-config-chweb::pencil:Disciple团队eslint配置检测规范

    eslint-config-chweb 门徒团队ESLint共享配置规则 安装 ...只针对有对准的代码(.js和.jsx后缀)才进行校正。 初步:添加或修改.eslintrc.js配置文件 module . exports = { "plugins" : [ "react

    webpack打包react项目的模版

    - **加载器(Loaders)**:转换模块的工具,例如,将 `.jsx` 文件转换为 `.js` 文件,或者将 CSS 提取到单独的文件。 - **插件(Plugins)**:扩展Webpack功能,执行更复杂的任务,如自动添加版权信息、优化资源、提取...

    webpack学习文档

    - 通过配置 `resolve.extensions` 来指定程序自动补全识别的文件后缀。 #### 六、Webpack 的应用场景 1. **大型项目构建**:对于大型项目,Webpack 能够有效地管理复杂的依赖关系,并进行代码拆分,提高应用的...

    webpack demo

    - **Loader(加载器)**: 转换模块的工具,例如将`.jsx`转换为`.js`,或将CSS导入到JavaScript文件中。 - **Plugin(插件)**: 扩展Webpack功能的组件,执行更复杂的任务,如提取CSS为单独文件、优化图片等。 - *...

    AnimalApp:Hawksbill应用程序组件文件

    1. **源代码文件**:JavaScript(JS)文件,可能包括`.js`后缀的文件,它们包含了实现Hawksbill组件功能的代码。这些文件可能使用了ES6(ECMAScript 2015)及以上版本的语法,引入了模块化(如`import`和`export`)...

    React 初步了解

    一.React框架 1 .... React 是一个用于构建用户界面的JavaScript库 核心专注于视图,目的实现组件化开发 每个引入的组件里有什么东西 react是核心模块,里面有...在react中支持jsx语法,后缀名是jsx的文件,那么可以

    在Vue项目中使用Typescript的实现

    TypeScript是JavaScript的一个超集,它引入了类型系统和一些高级特性,如接口、泛型和枚举等,使得开发更加严谨。Vue 2.x虽然官方推荐使用ES6语法,但与Typescript结合也是完全可行的。 在实际操作中,由于Vue 3.0...

Global site tag (gtag.js) - Google Analytics