Webpack 入门实战:利用 Webpack 来开发一个小型的 Todo 应用

阅读时长 14 分钟读完

Webpack 是一个模块打包工具,可以处理 JavaScript、CSS、HTML、图片等各种类型的文件,并将它们打包成一个或多个静态资源。Webpack 在 Web 开发领域中越来越受欢迎,因为它能够使代码在浏览器中加载更快、更可靠,同时还能支持多种开发方式,例如组件化、模块化等。

本文将介绍如何使用 Webpack 来开发一个小型的 Todo 应用。在这个 Todo 应用中,用户可以添加、删除、标记待办事项,并且这个应用将会在用户的本地存储中保存当前的状态。

前置知识

在开始使用 Webpack 开发 Todo 应用之前,你需要了解以下的前置知识:

  • 基本的 HTML、CSS、JavaScript 知识
  • Node.js 知识
  • 使用 npm 安装和管理 JavaScript 包的知识
  • ES6 语法的基础知识

项目初始化

在开始之前,首先需要初始化项目。创建一个新的项目目录,并在其中执行以下命令:

这个命令会创建一个 package.json 文件,其中包含了项目的基本信息和依赖项列表。

安装依赖

在本项目中,我们需要安装以下依赖:

  • Webpack:我们需要安装 Webpack 来打包我们的应用代码。
  • Webpack Dev Server:Webpack Dev Server 是一个 Webpack 插件,它提供了一个本地开发服务器,可以在开发时自动编译和刷新代码。
  • Babel:我们需要安装 Babel 来转换 ES6 语法为浏览器可以理解的语法。
  • Babel Loader:Babel Loader 是 Webpack 中用于加载和处理 Babel 转换的插件。
  • css-loader:css-loader 是 Webpack 中用于加载和解析 CSS 文件的插件。
  • style-loader:style-loader 是 Webpack 中用于将 CSS 代码注入到 HTML 页面中的插件。
  • node-sass:node-sass 是一个 Node.js 模块,它可以将 Sass 文件编译为 CSS 文件。

执行以下命令来安装这些依赖:

配置 Webpack

现在我们已经安装好了必要的依赖,我们可以开始配置 Webpack:

-- -------------------- ---- -------
-- -----------------
----- ---- - ----------------
----- ----------------- - -------------------------------

-------------- - -
  ------ -----------------
  ------- -
    --------- ------------
    ----- ----------------------- --------
  --
  ---------- -
    ------------ -------------------- --------
    --------- -----
    ----- -----
  --
  ------- -
    ------ -
      -
        ----- --------
        ---- ---------------
      --
      -
        ----- ----------
        ---- -
          ---------------
          -------------
          --------------
        --
      --
    --
  --
  -------- -
    --- -------------------
      ------ ----- -----
      --------- -------------------
      --------- ---------------
    ---
  --
  ----- --------------
-

上述配置文件的内容包括:

  • entry: 入口文件的路径,这里指定了 ./src/index.js
  • output: 输出的文件路径和名称,这里输出的文件是 dist/bundle.js
  • devServer: Webpack Dev Server 的配置,这里指定了本地服务器的端口号是 9000。
  • module: 用于指定如何处理应用中的各种类型的文件的规则。
  • plugins: Webpack 插件的配置,这里使用了 HtmlWebpackPlugin 类来生成 HTML 文件。
  • mode: 指定 Webpack 的模式是开发模式,这将启用对应的默认配置。

创建应用

现在,我们已经准备好开始创建 Todo 应用。

创建 HTML 文件

首先,我们需要在 src 目录下创建一个 HTML 文件,用于展示我们的应用。

-- -------------------- ---- -------
---- ---------------- ---
--------- -----
----- ----------
------
  ----- ----------------
  ----------- -----------
-------
------
  ---- ---------------
-------
-------

这个 HTML 文件中只包含了一个 div 元素,用于在其中渲染 React 组件。

创建样式文件

接下来,我们需要为我们的应用创建一个样式文件,这里使用 Sass 编写样式。

-- -------------------- ---- -------
-- ---------------- --
--------------- --------

- -
  ------- --
  -------- --
-

---- -
  ---------- -----
  ------------ ---------- ------ ---------- ------ -----------
-

---------- -
  ---------- ------
  ------- - -----
-

---------- -
  ----------- -----
-

---------- -
  -------- -----
  ------------ -------
  -------------- -----
  -------- -----
  ----------------- -----
  -------------- ----
  ----------- - --- --- ------- -- -- -----
-

---------- -
  ----- --
  ------------ -----
  ----------- ----------
  ---------------- -----
  ------ -----
-

-------------------- -
  ---------------- -------------
  ------ -----
-

------------ -
  ------------ -----
  ------- --------
  ------ ---------------
-

创建 JavaScript 文件

我们将使用 React 和 Redux 来构建 Todo 组件。首先,让我们创建一个 src 目录下的 index.js 文件,这个文件将会作为我们应用的入口文件。

-- -------------------- ---- -------
-- --------------
------ ----- ---- --------
------ -------- ---- ------------
------ - ----------- - ---- --------
------ - -------- - ---- --------------
------ --- ---- --------
------ ----------- ---- ------------
------ ---------------

----- ----- - -------------------------

----------------
  --------- --------------
    ---- --
  ------------
  -------------------------------
--

上述代码进行了以下操作:

  • 引入了 React、ReactDOM、Redux、和我们创建的组件和样式文件。
  • 创建了 Redux store 对象,store 包含了整个应用的状态。
  • 使用 ReactDOM.render() 方法在页面上渲染应用。

创建 Redux reducer

我们需要使用 Redux 来管理应用的状态。在 src 目录下创建一个名为 reducer.js 的文件,用于定义 Redux 的 reducer 函数。

-- -------------------- ---- -------
-- ----------------
----- ------------ - -
  ----- ---
--

------ ------- -------- ----------------- - ------------- ------- -
  ------ ------------- -
    ---- -----------
      ------ -
        ---------
        ----- -
          --------------
          ---------------
        --
      --
    ---- --------------
      ------ -
        ---------
        ----- ------------------------ -- ------- --- -------------------
      --
    ---- --------------
      ------ -
        ---------
        ----- --------------------- -- -
          -- -------- --- ------------------ -
            ------ -
              --------
              ---------- ----------------
            --
          -
          ------ -----
        ---
      --
    --------
      ------ ------
  -
-

上述代码中,我们定义了一个 initialState 对象,它包含了 todo 的列表。rootReducer 函数接收当前的 State 和一个 Action,根据 Action 类型,返回新的 State。在这个实例中,Action 的类型有添加、删除和标记待办事项。

创建 Todo 组件

src 目录下创建一个名为 App.jsx 的文件,这个文件将用来渲染 Todo 组件。

-- -------------------- ---- -------
-- -------------
------ ------ - -------- - ---- --------
------ - ------- - ---- --------------
------ -------- ---- -------------

-------- ----- ----- -------- -- -
  ----- ------------ -------------- - -------------

  -------- --------------- -
    -- -------------------- -
      -------
    -
    ----- ------- - -
      --- -----------
      ----- -----------
      ---------- ------
    --
    ----------
      ----- -----------
      -------- --------
    ---
    ------------------
  -

  -------- ---------------------- -
    ----------
      ----- --------------
      -------- -----
    ---
  -

  -------- --------------------------- -
    ----------
      ----- --------------
      -------- -----
    ---
  -

  ------ -
    ---- ----------------------
      -------- ---------
      ---- ----------------------
        ---------------- -- -
          ---------
            -------------
            -----------
            ------------ -- -----------------------
            ------------ -- ----------------------------
          --
        ---
      ------
      ---- ---------------------
        ------
          -----------
          ---------------- -----
          ------------------
          ------------- -- ------------------------------
        --
        ------- ------------- ------------------------------------
      ------
    ------
  --
-

-------- ---------------------- -
  ------ -
    ----- -----------
  --
-

------ ------- ------------------------------

上述代码中,我们定义了一个名为 App 的组件。这个组件包含了一个输入框和一个待办事项列表。在输入框中输入新的待办事项,并且单击 Add 按钮,就可以将新的待办事项添加到列表中。在待办事项中点击删除按钮,就可以将其从列表中删除。

创建 TodoItem 组件

src 目录下创建一个名为 TodoItem.jsx 的文件,这个文件将用来渲染每个 Todo 项。

-- -------------------- ---- -------
-- ------------------
------ ----- ---- --------
------ --------- ---- -------------

-------- ---------- ----- --------- -------- -- -
  ------ -
    ---- ----------------------
      ------
        ---------------
        ------------------------
        -------------------
      --
      --
        --------
        --------------------- ---------------- - ----------- - -----
        ------------ -- -
          -------------------
          -----------
        --
      -
        -----------
      ----
      ------- ------------- ----------------------- ----------------------------------
    ------
  --
-

------------------ - -
  ----- -----------------
    --- ----------------------------
    ----- ----------------------------
    ---------- --------------------------
  --------------
  --------- --------------------------
  --------- --------------------------
--

------ ------- ---------

上述代码中,我们定义了一个名为 TodoItem 的组件。这个组件包含了一个复选框、一个待办事项的描述和一个删除按钮。在复选框中勾选或取消勾选,就可以标记待办事项为已完成或未完成。在待办事项的描述中点击,也可以标记待办事项为已完成或未完成。

运行应用

现在,我们已经创建了所有的文件,我们可以使用 Webpack 来打包和启动应用。在终端中执行以下命令:

这个命令将会打包我们的应用,并将应用启动在本地开发服务器上,端口号为 9000。

在浏览器中打开 http://localhost:9000,就可以看到我们的 Todo 应用。

总结

使用 Webpack 构建应用的主要目的是为了提高应用代码的可维护性和可扩展性。Webpack 使得应用可以按照组件或模块来划分代码,将代码打包成多个文件,并且可以在开发时自动编译和刷新代码,从而大大提高开发效率。

在本文中,我们使用 Webpack 和相关的依赖,来实现了一个小型的 Todo 应用。我们学习了如何基于 React 和 Redux 创建组件、如何使用 Webpack 来打包和管理应用代码、以及如何使用 Webpack Dev Server 来实现自动化的开发流程。希望这篇文章能让你对 Webpack 有更深入的理解,并且能够用它来提高你的 Web 开发效率。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/649a4d8248841e989472d59d

纠错
反馈