Index.js
При просмотре кода, конечно, он начинается с его входного файла, поэтому первый код, на который мы смотрим, это/index.js
документ
Начинать
Открытьindex.js
файл, код всего 28 строк, который содержитcamelCase
функция (посмотрите на имя функции, чтобы знать, что это функция, которая использует верблюжий регистр для имени),req
переменные и операции с переменными для этого иexport
действовать
В этом файле я впервые проверилrequire.context()
Использование этой функции, вы можете обратиться кздесь,так же какexports
а такжеmodule.exports
разница, вы можете обратиться кздесь, вот некоторые предзнаменования, давайте к делу
Через два вышеупомянутых предзнаменования мы знаемreq
Эта переменная используется для циклического прохождения объекта, который генерирует компоненты, а также создает файл стиля каждого компонента.
// index.js
function camelCase(name) {
return name.charAt(0).toUpperCase() +
name.slice(1).replace(/-(\w)/g, (m, n) => {
return n.toUpperCase();
});
}
// 抛出样式 这个正则是匹配当前目录下的所有的/style/index.tsx文件
const req = require.context('./components', true, /^\.\/[^_][\w-]+\/style\/index\.tsx?$/);
req.keys().forEach((mod) => {
let v = req(mod);
if (v && v.default) {
v = v.default;
}
// 抛出组件 这个正则是匹配当前目录下的素有index.tsx文件
const match = mod.match(/^\.\/([^_][\w-]+)\/index\.tsx?$/);
if (match && match[1]) {
if (match[1] === 'message' || match[1] === 'notification') {
// message & notification should not be capitalized
exports[match[1]] = v;
} else {
exports[camelCase(match[1])] = v;
}
}
});
module.exports = require('./components');
Но, в конце концов, я не знаю, зачем мне нужно добавлять это предложение.module.exports = require('./components');
Раз выше закинули, то зачем еще раз закидывать, но это вроде как связано с какой средой и какими операциями после упаковки, так что закинуть раз-два сюда. Это место еще нужно спросить у всех.