Distintivo
- verifique && formato
- webpack1-ie8
- webpack3-reage
- webpack3-vue
- webpack4-react
- webpack4-vue
Instruções de atualização
- As pastas contidas em
webpack4-vue
e webpack3-vue
são exatamente as mesmas, copie-as você mesmo, se necessário. - As pastas incluídas em
webpack4-react
e webpack3-react
são exatamente as mesmas, copie-as você mesmo, se necessário. - A diferença entre o webpack 2 e 3 é muito pequena. Basicamente, não há problema em substituir diretamente 2 por 3. Apenas as versões 1/3/4 são discutidas aqui, o documento oficial de migração.
- O ambiente de desenvolvimento foi recarregado a quente. Se você deseja que o ambiente de desenvolvimento seja compatível com o IE11 ou inferior, desmarque o recarregamento a quente.
- Remova
react-hot-loader/babel
do arquivo de plugins
.babelrc
- Remova
react-hot-loader
de devDependencies
em package.json
-
devServer.inline
em config/opt.dev.js
deve ser falso (vue só precisa modificar este ponto) - Remover
react-hot-loader
do código
- O ambiente de desenvolvimento já suporta a
mock api
de front-end, que irá ler automaticamente os arquivos em src/mock
e realizar atualizações quentes. A lógica do código está em config/mock.js
, que contém example
. - As versões do
vue
e vue-template-compiler
devem ser completamente consistentes, caso contrário, haverá erros imprevistos. - As configurações de
webapck134,react,vue
no diretório config
foram unificadas. Diferentes projetos só precisam alterar opt.self.js
- Há omissões na descrição
readme
. Vá até o arquivo para ler os comentários do código. O ponto principal é que os arquivos no diretório config
tenham comentários e endereços de documentos de referência oficiais. -
devDependencies
são usadas para colocar as dependências da versão bloqueada. dependencies
são as dependências mais recentes. Como não precisam ser publicadas no npm, esta classificação é mais arbitrária e até errada. Baidu para obter detalhes específicos. - Como
DllPlugin
e CommonsChunkPlugin或splitChunks
possuem funções duplicadas, e o primeiro precisa executar um comando webpack previamente, ele pode ser simplesmente substituído por externals
. O último possui um grande espaço operável e pode ser descompactado livremente para tornar o tamanho do arquivo mais uniforme. , o seguinte será DllPlugin
não é mais usado
Preparação ambiental
- Defina
npm config set registry https://registry.npm.taobao.org
- Execute
npm i -g npminstall
como administrador - Digite o diretório atual com a linha de comando e execute
npminstall -c
- Se ocorrer um erro, as soluções comuns são as seguintes:
- Execute
npm cache clean -f
e npm cache verify -f
como administrador - Excluir diretório
node_modules
- Execute novamente
npminstall -c
- Finalmente, mude para uma rede melhor e atualize
node
e npm
- Notas sobre uso:
-
npminstall -c
e npm install
não são compatíveis. O primeiro é muito mais rápido que o último, mas não podem ser usados juntos. - Mudar para uso requer a exclusão da pasta
node_modules
- Se houver um problema com
node-v12.0.0
, não atualize-o ainda. A versão mais recente do node-v12
não apresenta problemas. - Ocasionalmente, ocorrem erros de empacotamento ou de codificação inexplicáveis. Exclua
node_modules
e tente novamente.
Inicialização do ambiente de desenvolvimento
-
npm start
- Por favor, use-o quando precisar de suporte, ou seja
-
npm run env -- FOR_IE=1 npm start
- Abra http://localhost:8888 no navegador
Implantação do ambiente de produção
-
npm run app
- Por favor, use-o quando precisar de suporte, ou seja
-
npm run env -- FOR_IE=1 npm run app
- Basta copiar o conteúdo da pasta dist para o servidor
Adicione outros recursos
-
npm run report
para visualizar a composição do pacote do pacote de produção- Por favor, use-o quando precisar de suporte, ou seja
-
npm run env -- FOR_IE=1 npm run report
-
npm run debug
adiciona inicialização de depuração de ponto de interrupção, porta 7777- Por favor, use-o quando precisar de suporte, ou seja
-
npm run env -- FOR_IE=1 npm run debug
Atualizar pacote.json
- Instale
npm i -g npm-check-updates
- Execute
ncu
(view) ncu -u
(update) no diretório package.json
Use o recarregamento a quente do react-hot-loader
Documentação oficial
- Adicione
react-hot-loader
a devDependencies
em package.json
-
devServer.inline
de webpack.cfg.dev.js
deve ser true
- Adicione
react-hot-loader/babel
aos plugins
de .babelrc
- Adicione
--hot
ao comando de inicialização, não use HotModuleReplacementPlugin
ao mesmo tempo - O componente raiz
export
é modificado e react-hot-loader
é introduzido antes react
import { hot } from 'react-hot-loader' ;
export default hot ( module ) ( App ) ;
Nota: Apenas 4.3.12 suporta ie8+react@0
e requer uma pequena alteração, que foi concluída no script
Processamento de imagem
- Imagem comum => https://tinypng.com
图片压缩
=> url-loader
(abaixo de 4kb) - imagem svg => https://github.com/svg/svgo
svg压缩
=> svg-url-loader
// 建议4kb以下使用,较大文件建议用file-loader
const src = require ( "!svg-url-loader?noquotes!./x.svg" ) ;
webpack 3 4 suporta pesquisa ie8
- O código empacotado pelo DllPlugin não foi convertido e provavelmente terá problemas de incompatibilidade, portanto, a velocidade do empacotamento não pode ser muito melhorada.
- O princípio do hot reload é Object.defineProperty, que não é suportado pelo IE8
- Não é possível usar o react/antd mais recente, [email protected]/[email protected] suporta apenas ie8;
- Neste ponto, quase todas as vantagens do webpack 3 4 não são suportadas. O Webpack 3 4 não é considerado por enquanto e a compatibilidade da versão online não é muito boa.
- Se você realmente deseja usar o webpack 3 4 para ser compatível com o IE8, os itens a seguir são fornecidos para referência, mas não foram testados (todos devem ter problemas)
- https://github.com/ediblecode/webpack4-ie8
- https://github.com/natural-fe/natural-cli/blob/master/ie8-mvvm.md
Referência de especificação de código
- http://eslint.cn/docs/rules
eslint规则文档
- https://github.com/yuche/javascript
js规范中文版
- https://github.com/airbnb/javascript
js规范es5,es6,react
- https://github.com/JasonBoy/javascript/tree/master/react
react规范中文版
- https://github.com/sivan/javascript-style-guide/tree/master/es5
es5规范中文版
- Configurações
esling
comumente usadas eslint-config-egg
eslint-config-react-app
eslint-config-ali
Hábitos pessoais de codificação (diferentes de pessoa para pessoa, escolha o que você acha certo, apenas para referência)
Sobre deixar uma linha em branco no final do arquivo
- Os indivíduos seguem seus hábitos e o desenvolvimento da equipe é unificado por meio
eslint --fix
Sobre recuo de código
- Os indivíduos seguem seus hábitos e o desenvolvimento da equipe é unificado por meio
eslint --fix
- Há um debate interminável entre tabulações e espaços: se você não seguir o alinhamento de quebra de linha de atributo do HTML e o alinhamento de dois pontos do CSS, não há nada de errado com tabulações. Se você quiser buscar o alinhamento, é melhor usar espaços;
Sobre aspas
- js unifica aspas duplas, as aspas duplas dentro da string são unificadas
"
, aspas simples x27
, aspas duplas x22
, para que as aspas duplas sejam unificadas - CSS unifica aspas duplas e o conteúdo do conteúdo deve ser escapado para evitar caracteres ilegíveis.
- css/less/scss, aspas duplas podem ser usadas em vez de aspas simples em muitos casos e, em alguns casos, aspas simples podem causar problemas durante a compilação. Além disso, as tags html também usam aspas duplas, que são unificadas.
Se deve adicionar vírgula
- Se não houver erros de sintaxe, adicione-o e haverá menos alterações nas diferenças.
Se deve adicionar um ponto e vírgula
- Se não houver erros de sintaxe, adicione-o e haverá menos alterações nas diferenças.
Sobre a definição de variáveis
- Se for definido separadamente, uma variável por linha, a prioridade é dada a const e let é usado em vez de var.
- Se possível, use a desestruturação de objetos ou arrays para atribuições.
Sobre o pedido de importação
- A maior prioridade é introduzir polyfill, seguido por React/Vue
- Em segundo lugar, no diretório do módulo (node_modules), a profundidade do caminho do módulo é classificada primeiro e a ordem é classificada e classificada de acordo com (componente>função>constante)
- Em seguida, ele é carregado por meio do carregador médio, como: promessa-carregador
- Depois, há o diretório de desenvolvimento (dev_dir), que é classificado e ordenado de acordo com (componente>função>constante)
- Introduzir arquivos de estilo, classificar e classificar de acordo com (node_modules>dev_dir)
- Importe arquivos de imagem, classifique-os e ordene-os de acordo com (node_modules>dev_dir)