React03-JS表达式与模块组件化

69 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 3 天,点击查看活动详情

3、jsx语法规则

jsx语法规则:

1.定义虚拟DOM时,不要写引号。

2.标签中混入JS表达式时要用{}。

3.样式的类名指定不要用class,要用className。

4.内联样式,要用style={{key:value}}的形式去写。

5.只有一个根标签

6.标签必须闭合

7.标签首字母

(1).若小写字母开头,则将该标签转为html中同名元素,若html中无该标签对应的同名元素,则报错。

(2).若大写字母开头,react就去渲染对应的组件,若组件没有定义,则报错。

一定注意区分:【js语句(代码)】与【js表达式】

1.表达式:一个表达式会产生一个值,可以放在任何一个需要值的地方

下面这些都是表达式:

(1). a

(2). a+b

(3). demo(1)

(4). arr.map()

(5). function test () {}

2.语句(代码):

下面这些都是语句(代码):

(1).if(){}

(2).for(){}

(3).switch(){case:xxxx}

 <body>
     <!-- 准备好一个“容器” -->
     <div id="test"></div>
     
     <!-- 引入react核心库 -->
     <script type="text/javascript" src="../js/react.development.js"></script>
     <!-- 引入react-dom,用于支持react操作DOM -->
     <script type="text/javascript" src="../js/react-dom.development.js"></script>
     <!-- 引入babel,用于将jsx转为js -->
     <script type="text/javascript" src="../js/babel.min.js"></script>
 ​
 ​
     <script type="text/babel"> 
         //模拟一些数据
         const data = ['Angular','React','Vue']
         //1.创建虚拟DOM
         const VDOM = (
             <div>
                 <h1>前端js框架列表</h1>
                 <ul>
                     {
                         data.map((item,index) => {
                             return <li key={index}>{item}</li>
                         })
                     }
                 </ul>
             </div>
         )
 ​
         //2.渲染虚拟DOM到页面
         ReactDOM.render(VDOM,document.getElementById('test'))
     </script>
 </body>
 <script type="text/babel">
   let list = ['Angular', 'React', 'Vue']
 ​
   const VDOM = (
     <div>
       <h1>前端js框架列表</h1>
       <ul>
         // React 会自动遍历数组
         {list.map((item, index) => {
           // Each child in a list should have a unique "key" prop.
           return <li key={index}>{item}</li>
         })}
       </ul>
     </div>
   )
 ​
   ReactDOM.render(VDOM, document.getElementById('test'))
 </script>

模块与组件、模块化与组件化的理解

模块

  1. 理解:向外提供特定功能的js程序, 一般就是一个js文件
  1. 为什么要拆成模块:随着业务逻辑增加,代码越来越多且复杂。
  1. 作用:复用js, 简化js的编写, 提高js运行效率

组件

  1. 理解:用来实现局部功能效果的代码和资源的集合(html/css/js/image等等)
  1. 为什么要用组件: 一个界面的功能更复杂
  1. 作用:复用编码, 简化项目编码, 提高运行效率

模块化

当应用的js都以模块来编写的, 这个应用就是一个模块化的应用

组件化

当应用是以多组件的方式实现, 这个应用就是一个组件化的应用