likes
comments
collection
share

(02)React 初识——② React 工程目录文件简介 | React 基础理论实操

作者站长头像
站长
· 阅读数 16
转载请注明出处,未经同意,不可修改文章内容。

🔥🔥🔥“前端一万小时”两大明星专栏——“从零基础到轻松就业”、“前端面试刷题”,已于本月大改版,合二为一,干货满满,欢迎点击公众号菜单栏各模块了解。

1 结构解析

在编辑器中打开项目 jianshu-test ,跟着我一步一步地学习和操作。

1.1 外层“文件”说明

(02)React 初识——② React 工程目录文件简介 | React 基础理论实操

  • .gitignore ——当我们使用 git 的时候,我们希望将代码上传到线上,但有些特殊的文件我并不希望将其上传到线上去。此时,我们就可以将这些文件配置在 .gitignore 里面。

  • package-lock.json ——这是 package 的“锁文件”。它可以帮我们确定我们安装的“第三方包”的具体版本,以保持团队编程的统一性。

  • package.json ——这里边有很多“依赖包”。在开发项目的时候,我们会有一些“第三方模块”的依赖,而这些“依赖”都放在这里。

  • README.md ——这是项目说明文件。我们可以自己用 markdown 语法写一些自己对项目的说明。

1.2 各“文件夹”说明

(02)React 初识——② React 工程目录文件简介 | React 基础理论实操

  • node_modules ——这里边放置的是我们项目的“依赖包”,我们一般不用动。

  • public

(02)React 初识——② React 工程目录文件简介 | React 基础理论实操

  • favicon.ico ——用于放置定制的“页面图标”,即页面标签前边的小图标。见《HTML——② HTML 元素、属性详解》。

  • index.html ——这是我们项目的首页“HTML 模板”,我们可以删除多余的注释,先看看结构,下一篇文章我们再弄清每一行代码的用途:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />

    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />

    <title>React App</title>
  </head>
  <body>
    
    <!-- ❗️下边这行代码意思是:
    如果网页把这个 script 给禁掉了,那么我需要给用户一个提示说,
    “你应该允许你的网页去解析 JavaScript”。
    这是一段容错的代码,可以使代码的“健壮性”更强。
    -->
    <noscript>You need to enable JavaScript to run this app.</noscript>
    
    <div id="root"></div>
  </body>
</html>
  • manifest.json ——这个跟我后边要讲到的一个概念相关,等下回过头再看。

  • src ——这是我们“源代码”所放置的目录。也是我们写“工程化”代码的时候,主要编写的地方。我们打开这个目录:

    • 下边有一个 index.js 文件,这个文件是我们整个项目的“入口文件”。

(02)React 初识——② React 工程目录文件简介 | React 基础理论实操

import React from 'react'; // 1️⃣从 package.json 文件里边引入 react 和 react-dom;
import ReactDOM from 'react-dom';

import './index.css'; /*
											2️⃣React 的设计理念包含了很重要的一条:All in JS。
                      以前我们讲 CSS 和 JS 是分离的,但在 React 里边,CSS 可以像 JS 一样,
                      通过“模块”的形式被嵌入到 JS 里边;
                       */

import App from './App'; /*
												 ❗️❗️❗️3️⃣后边的 ./App 其实是 ./App.js 的缩写。后缀可以省略,
                         因为“脚手架工具”本身就会去当前目录下优先寻找后缀为 .js 的 App 文件,
                         并引入。
                          */

import * as serviceWorker from './serviceWorker';
/*
❗️❗️❗️4️⃣从当前目录下引入 serviceWorker,它是用来帮助我们借助写网页的形式来写一些手机 App 的应用(
PWA——progressive web application)。
可以达到的效果:
比如我们借助它写了一个网页,然后将其上线到了一台支持 https 协议的服务器上。
此时的网页就具备了以下特征:当用户第一次访问这个网页时,他需要联网才可以看到这个网页。
但,当用户访问完网页突然断网了,那这时,只要我们的项目引用了 serviceWorker,即使它断网了,
用户也依然可以访问他之前浏览的那个页面。因为 serviceWorker 会将之前浏览的网页存储在浏览器之内,
用户可以离线查看!
 */

ReactDOM.render(<App />, document.getElementById('root')); /*
																													 5️⃣将 App 挂载并渲染到页面上(
                                                           下一篇会详讲)。
                                                            */

serviceWorker.unregister();
  • 接着,我们打开 App.js
import React from 'react'; // 1️⃣首先,引入 react;
import logo from './logo.svg'; // 2️⃣引入了一个 svg 格式的 logo 图标;
import './App.css'; /*
										3️⃣App.js 文件里边引入了一个 App.css 文件,
                    这个文件里包含了页面的一些样式;
                     */

function App() {
  return ( // 🚀我们可以很直观地发现下边的内容就是我们页面反映出来的内容。
    <div className="App">  
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;
  • src 里边还有一个 App.test.js 文件,它是一个“自动化”测试文件。当我们做 React 项目的时候,由于会涉及到“函数式”的编程,所以可以做一些“自动化测试”。

  • ❓遗留问题: public 文件夹中,有一个 manifest.json ,它是指什么呢?

答:这里就联系到刚刚讲的 PWA 和 serviceWorker。

{
  "short_name": "React App",
  "name": "Create React App Sample",
  "icons": [
    {
      "src": "favicon.ico",
      "sizes": "64x64 32x32 24x24 16x16",
      "type": "image/x-icon"
    }
  ],
  "start_url": ".",
  "display": "standalone",
  "theme_color": "#000000",
  "background_color": "#ffffff"
}

以上代码定义了:

  • 我这个网页,如果你当成 App 使用,就可以把它存储在桌面上(即手机桌面上有一个快捷方式可以直接进入到网址);
  • 可以设置快捷方式展示的图标、对应的网址,以及主题颜色等等。

2 精简项目目录和文件中的代码

对于一个初始项目,我们可以将上边很多暂时用不上的文件和代码删掉,以使工程尽可能地精简化。

我们从第一个文件夹开始:

  • node_modules ——不用动;

  • public

    • favicon.ico ——不动,网页标签的图标每个网站都得有;

    • index.html ——删除多余的注释,删掉暂时用不上的代码(如 PWA 相关):

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />


    <title>jianshu-test</title>
  </head>
  <body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>

  </body>
</html>
  • manifest.json ——删掉,我们还用不着实现 PWA。

(02)React 初识——② React 工程目录文件简介 | React 基础理论实操

  • src
    • App.css ——删掉,之后我们自己在合适的位置写我们需要的样式;

    • App.js ——删除多余的代码:

import React from 'react';

function App() {
  return (
    <div>
      hello, qdywxs.
    </div>
  );
}

export default App;
  • App.test.js ——删掉,我们先不用管“自动化测试”;
  • index.css ——删掉;

(02)React 初识——② React 工程目录文件简介 | React 基础理论实操

  • index.js ——删除多余的代码(如 PWA 相关):
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(<App />, document.getElementById('root'));

(02)React 初识——② React 工程目录文件简介 | React 基础理论实操

  • serviceWorker.js ——删掉,我们先不用去实现 PWA。

最后页面效果: (02)React 初识——② React 工程目录文件简介 | React 基础理论实操

祝好,qdywxs ♥ you!