1.public文件夹
放公共文件的,一般来说不用管它。但index.html是入口文件。
2.src文件夹
我们开发的文件夹,非常重要。app.js其实是组件文件,index.js文件才是我们的入口文件
*import的用法
一个组件中,有且只有一个默认导出。比如有两个js文件,分别是home.js和user.js。
在user.js里:
export default user1
export const user =42
在home.js里,引用user.js:
import anyText from './user'
import {user} from './user'
anyText可以取任意名字,它都是对应到user.js里的export default user1。
user加了大括号,是因为指定引用user.js里的export const user=42.
在这里我们也可以写成
import anyText, {user} from './user'
我们可以把from 后面的'./user'理解为从user.js文件中引用。写到大括号里的组件就是指定引用,没写到大括号里的就是引用默认组件。
还有一种特殊的:
import * as anyText1 from './user'
这里的*表示引用user.js文件里的所有组件并命名为anyText1,但是不包括默认组件。
3.调整目录结构
2中src里的文件比较乱,什么文件都放到src文件夹下的,所以我们需要调整把它们分别归类。
components用来放我们组件文件,assets用来放我们的静态资源。
4.文件关系
在这个项目里,app.js是根组件。但我们真正实际的项目,一般不是这样的结构。我们一般把动态路由挂载到根组件里。
a)我们在components文件夹中创建Home组件。(Home.js,home的首字母要大写)
注意:构造函数中的关键字super,指代父类的实例(即父类的this对象)。子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象。
class Person {
constructor (name) {
this.name = name;
}
}
class Student extends Person {
constructor (name, age) {
super(); // 用在构造函数中,必须在使用this之前调用
this.age = age;
}
}
为什么官方的列子里面写个super(props):
只有一个理由需要传递props作为super()的参数,那就是你需要在构造函数内使用this.props
那官方提供学习的例子中都是写成super(props),所以说写成super(props)是完全没问题的,也建议就直接这样写。
b) 我门在components文件中再创建一个News组件。