Node.js 快速静态服务与网页包

Node.js 快速静态服务与网页包,node.js,rest,express,webpack,babeljs,Node.js,Rest,Express,Webpack,Babeljs,最近我一直在思考React应用程序的创建和服务方式。 在互联网上运行该应用程序有三种最流行的方式: 只需构建并运行index.html 使用express.static构建并提供index.html 使用webpack和babel创建应用程序 创造的差异是什么? 最好的方法是什么? 我可以只使用webpack拥有后端逻辑吗?我是否错过了创建react应用程序的其他方法 只需构建并运行index.html 我猜你的意思是没有服务器。如果您不需要使用任何安全资源或服务器端资源,这就足够了。这还意味着

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

  • 只需构建并运行index.html

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

  • 使用webpack和babel创建应用程序

  • 创造的差异是什么? 最好的方法是什么? 我可以只使用webpack拥有后端逻辑吗?我是否错过了创建react应用程序的其他方法

  • 只需构建并运行index.html
  • 我猜你的意思是没有服务器。如果您不需要使用任何安全资源或服务器端资源,这就足够了。这还意味着要加载页面,您需要有文件和关联文件的副本

  • 使用express.static构建并提供index.html
  • 这与#1不同之处在于,服务器负责将这些文件发送到浏览器。这很方便,因为您实际上可以从外部访问URL,而且它还可能使您的代码能够在线访问安全资源

  • 使用webpack和babel创建应用程序
  • 这与您如何提供文件无关。您可能仍然需要一台服务器。这与你是否使用Express完全无关

    最好的方法是什么

    这取决于你的需要。就我个人而言,我发现Webpack是一件非常麻烦的事情,所以在处理它并浪费时间配置它几年之后,我又回到了Browserify。但是,有很多人喜欢Webpack,而且它肯定有一个插件生态系统,您可能会发现它对您的项目有用。使用你需要的东西

    我可以只使用webpack拥有后端逻辑吗

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

    我是否错过了创建react应用程序的其他方法


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

    如果您只想在生产环境中服务,请创建一个Express JS服务器来为您的生产环境服务。但是您仍然需要构建源代码,因为我在开发过程中使用Webpack,所以我更喜欢Webpack,并将Express JS服务器文件添加到名为server的单独目录中,您可以在该目录中创建、设置和配置Express JS静态服务器,这可能需要添加一个单独的配置文件记录器,端口,argv到服务器目录,并将与服务器相关的中间件放置到不同环境下的server目录下的middleware,因此可以是adddevmiddleware.jsaddprodMiddleware.jsfrontendMiddleware.js。然后只需将服务器用于所有环境,例如:“start:prod”:“跨环境节点_env=生产节点服务器开始:跨环境节点_env=开发节点服务器。它提供/包括许多东西。它将透明、起绒、缩小,使用gzip压缩用于生产,babel将确保在使用ES6方法/函数和语法编写代码时,您的代码被传输到早期兼容的Vanilla JS版本,如ES5,以支持较旧的浏览器。我知道,如果不编写TypeScript,您会喜欢使用ES6

    网页包还包括将资源复制到生成文件夹,如图像、视频等

    在开发过程中,您可以使用网页包模式“development”,该模式将自动将节点_ENV设置为dev,而不是出于调试目的缩小和压缩bundle.js文件。Webpack还有一个具有热重新加载功能的开发服务器。将应用程序构建到静态HTML/CSS和JS文件时

    调用index.html将不起作用,因为您应该调用JavaScript文件index.jsapp.js,这是在webpack.dev.babel.jswebpack.prod.babel.js中指定的,它们扩展了基本或通用的网页包配置,例如在webpack.base.babel.js将导入/需要index.html文件作为模板,使用HtmlWebpackPlugin。如何将模板构造或拆分为逻辑组件取决于您。您可以将所有内容放在一个模板文件index.html中,但它也可以只包含所需的元素,该元素可以/应该是一个简单的
    原因可能页眉和页脚文件可以包含doctype、head和body开头,例如,在body内部有一个标记,警告如果他们看到此文本,说明浏览器中已禁用JavaScript

    Webpack和更具体的HtmlWebpackPlugin将自动注入所有资产,如bundle.js(.gz)main.css等。。。使用正确的HTML标记。在更新版本的Webpack中,不要忘记手动添加所需的插件,例如html Webpack插件、更简洁的Webpack插件、Webpack cli,一些用于Webpack的中间件:Webpack dev middleware、Webpack dev middlewareWebpack pwa manifest是最常用和最重要的插件

    希望这能帮助您理解为什么webpack和babel对于前端应用程序来说几乎是必须的,babel甚至webpack不应该用于本机NodeJS服务器端代码,因为编写尽可能多的本机支持的NodeJS代码是一种最佳实践,因为异步/等待,使用承诺和许多新的数组和可写入的方法,如“映射”、“过滤”、“减少”、数组.f