快速静态投放vs. Webpack

问题描述 投票:-2回答:2

最近,我一直在思考React应用的创建和服务方式。有三种在互联网上运行该应用程序的最流行方式:

  1. 只需构建并运行index.html

  2. 使用express.static构建并提供index.html

  3. 使用webpack和babel创建应用程序

创作上有什么区别?最好的方法是什么?我只能通过使用webpack来拥有后端逻辑吗?我是否错过了其他一些方法来创建React App?

node.js rest express webpack babel
2个回答
-1
投票
只需构建并运行index.html
    我假设您的意思是没有服务器。如果您不需要使用任何安全资源或服务器端资源,则可以正常工作。这也意味着要加载页面,您需要拥有文件和关联文件的副本。
  1. 使用express.static构建并提供index.html文件
    这仅与#1不同,因为服务器负责将这些文件发送到浏览器。这很方便,因为您实际上可以使用一个URL进行外部访问,并且还可以使您的代码在线访问安全资源。
  1. 使用webpack和babel创建应用程序
    这与您如何提供文件有关。您仍然可能想要/需要服务器。是否使用Express完全无关。
  1. 最佳方法是什么?

    取决于您的需求。就个人而言,我发现Webpack非常麻烦,因此在经过数年的混乱和浪费时间进行配置之后,我改回了Browserify。但是,有很多人喜欢Webpack,并且肯定有一个可用的插件生态系统,您可能会发现对项目有用。使用您所需要的。

    我只能通过使用webpack来拥有后端逻辑吗?

    完全完全是100%无关。 Webpack用于制作客户端捆绑包。您在服务器端使用的与它无关。

    我是否错过了其他方法来创建React App?

    您可以只使用React和Babel。从技术上讲,不需要Webpack,但是Webpack或同等工具将使您的生活更加轻松。

-1
投票
Webpack。它提供/包括许多东西。它将使用gzip

transpile,lint,minify,minimate,compress进行生产,而babel将确保在使用编写代码时,将您的代码转译为ES5等Vanilla JS的早期兼容版本,以支持较旧的浏览器。 ES6的方法/功能和语法,如果您不编写TypeScript,我知道您会喜欢使用ES6。

Webpack还包括将资源复制到构建文件夹,例如图像,视频和更多...

在开发过程中,您可以使用Webpack模式'

开发

',它将自动将NODE_ENV设置为dev,而不会缩小和压缩bundle.js文件用于调试目的。 Webpack还具有带热重载功能的开发服务器。在将应用程序构建为静态HTML / CSS和JS文件时。

调用index.html将不起作用,因为您应该调用JavaScript文件index.js

app.js

,并且在webpack.dev.babel.js和< [webpack.prod.babel.js扩展了基本或常规的webpack配置,例如在webpack.base.babel.js内部,该配置将导入/需要使用index.html文件作为模板,使用< [HtmlWebpackPlugin。您如何将模板结构化或拆分为逻辑组件取决于您。您可以将所有内容放到一个模板文件index.html中,但也可以仅包含所需的唯一元素,该元素可以/应该是简单的<div id="app"></div>原因可能是页眉和页脚文件可以包含doctype,head和body的开头,例如,带有标签的标签,警告它们是否看到此文本,表明已在浏览器中禁用了JavaScript。Webpack以及更具体的HtmlWebpackPlugin将使用正确的HTML自动注入所有资产,例如bundle.js(.gz)

main.css

等。标签。在较新版本的Webpack中,不要忘记手动添加所需的插件,例如html-webpack-plugin,terser-webpack-plugin,webpack-cli, Webpack的一些中间件:webpack-dev-middleware ,webpack-dev-middleware和webpack-pwa-manifest是最常用和最重要的一些。希望这可以帮助您理解为什么webpack和babel对于前端应用程序几乎是必需的,而babel甚至webpack不应用于本机NodeJS服务器端代码,因为肯定是编写尽可能多的本机支持的NodeJS代码的最佳实践,因为< [Async / AwaitPromise

Promises的使用以及许多new Array and itterable方法,例如'map从我认为的节点7.1.x开始,本机支持','filter

,'reduce',Array.from()或'includes'”。
© www.soinside.com 2019 - 2024. All rights reserved.