当前位置: 首页 > news >正文

网站开发太简单了框架/阿里妈妈推广网站

网站开发太简单了框架,阿里妈妈推广网站,企业vi设计全套包括,开发公司和建筑公司同一法人前言事例一:我们在使用react的时候,会用create-react-app命令下载一个react的模板,然后开始在里面实现各种功能。事例二:前几个月的时候,我偶然发现飞冰官网,浏览后觉得不错,并在其上面下载了几…

5a6c378e334721ad5f714db78513f2aa.png

前言

事例一:我们在使用react的时候,会用create-react-app命令下载一个react的模板,然后开始在里面实现各种功能。

事例二:前几个月的时候,我偶然发现飞冰官网,浏览后觉得不错,并在其上面下载了几个模板。

那我们可能好奇两件事情: - 这个模板是如何从一个空目录下搭建起来的呢 - 这个模板搭建起来之后,是如何定义命令行下载的呢

本文将按照我自己的一个想法、以react模板样式为基准,就这两个话题展开叙述。

一、开始搭建

1.1 目录

├─ build                     // webpack配置目录
│  ├─ webpack.base.js        // webpack共有配置
│  ├─ webpack.dev.js         // webpack开发环境配置
│  └─ webpack.prod.js        // webpack生产环境配置
├─ public                    // 模板存放目录
│  ├─ favicon.ico            // 网站图标
│  └─ index.html             // 模板html文件
├─ src                       // 项目
│  ├─ common                 // 共有方法
│  ├─ compoents              // 自封装组件
│  ├─ layouts                // 布局组件 
│  ├─ pages                  // 页面
│  ├─ index.js               // 项目入口
│  ├─ App.css                // css样式
│  ├─ logo.svg               // 项目入口
│  └─ App.jsx                
├─ .babelrc                  // babel配置文件
├─ .browerslistrc            // 配置浏览器的兼容性范围
├─ .gitignore                // 忽略上传文件
├─ package.json              
├─ README.md                 // 工程搭建文档说明

1.2 初始化

首先,我们要创建一个空目录,然后初始化项目 npm init -y 执行完命令,我们会在目录中看见一个package.json文件。

f1737ae4b4e0c317ea6070e9146c7f20.png

1.3 配置package.json

我们知道,无论是项目的启动还是打包,它的命令是从package.json文件中自己定义的。在创建的模板中,有start命令-启动react,有build-将react项目打包,目前我们只配置这两个命令。

找到pakage.json文件中的scripts,像这样配置

"scripts": {"start": "webpack-dev-server --env.development --config ./build/webpack.base.js",      // 开发环境启动服务,"dev":"webpack --env.development --config ./build/webpack.base.js",                    // 开发环境打包代码"build": "webpack --env.production --config ./build/webpack.base.js",                  // 生产环境打包代码"build:server": "webpack-dev-server --env.production --config ./build/webpack.base.js" // 生产环境启动服务},

这样,我们完成了基础的配置,但是,我们会思考:不同的平台(MacWindows)是不是会出现设置环境变量不一样的问题?基于这个问题,我们找到了cross-env插件,那我们应该如何将上面配置好的scripts改进呢?

"scripts": {"start": "cross-env NODE_ENV=development webpack-dev-server --config ./build/webpack.base.js","dev":"cross-env NODE_ENV=development webpack --config ./build/webpack.base.js","build": "cross-env NODE_ENV=production webpack --config ./build/webpack.base.js","build:server": "cross-env NODE_ENV=production webpack-dev-server --config ./build/webpack.base.js"},

配置好以后,下一步,我们就开始配置webpack

1.4 配置webpack

1.4.1 webpack.base.js

const path = require('path');
const webpack = require('webpack');
const merge = require('webpack-merge');
const dev = require('./webpack.dev');
const prod = require('./webpack.prod');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');const isDev = process.env.NODE_ENV === 'development';const base = {entry: path.resolve(__dirname, '../src/index.js'),      // 入口module: {                                               rules: [{                                           // 对.js、.jsx的处理test: /.(js|jsx)$/,exclude: /node_modules/,use: 'babel-loader'}, {                                                // 对.css的处理test: /.css$/,use: [!isDev && MiniCssExtractPlugin.loader,      // 生产环境下样式抽离isDev && 'style-loader',{loader: 'css-loader',options: {importLoaders: 1                    // 引入的文件调用后面的loader处理}},{                                           // 智能添加样式前缀loader: "postcss-loader",options:{plugins:[require('autoprefixer')]}},].filter(Boolean)}, {test: /.scss$/,                               // css预处理器scss的处理use: [!isDev && MiniCssExtractPlugin.loader,     // 生产环境下抽离样式isDev && 'style-loader',"css-loader","sass-loader"].filter(Boolean)}, {test: /.less$/,                               // css预处理器less的处理use: "less-loader",}, {test: /.stylus$/,                             // css预处理器stylus的处理                           use: "stylus-loader",}, {test: /.(jpe?g|png|svg|gif)$/,                // 对图片的处理loader: "file-loader",options: {name: "image/[contentHash].[ext]"},}, {test: /.(woff|ttf|eot|otf|ico)$/,             // 对字体图标的处理loader: "file-loader",options: {name: "image/[name].[ext]"},}]},output: {                                              // 出口filename: 'scripts/[name].bundle.js',path: path.resolve(__dirname, '../dist')},resolve: {                                             // 引入js、jsx文件时,无需添加后缀extensions: ['.js', '.jsx'],},plugins: [!isDev && new MiniCssExtractPlugin({               // css样式抽离filename: 'css/[name].[contentHash].[ext]'}),new HtmlWebpackPlugin({                            // 配置入口htmlfilename: 'index.html',template: path.resolve(__dirname, '../public/index.html'),hash: true,inject: true,favicon: path.resolve(__dirname, '../public/favicon.ico'), minify: !isDev && {removeAttributeQuotes: true,               // 去掉属性双引号collapseWhitespace: true,                  // 将html文件折叠成一行}}),new webpack.HotModuleReplacementPlugin(),].filter(Boolean),devServer: {                                           // 配置服务hot:true,                                          // 热更新port: 3000,                                        // 端口号compress: true,                                    // 提升页面返回速度open: true,                                        // 启动服务后自动启动浏览器contentBase: path.resolve(__dirname, '../dist'),   // webpack启动服务会在dist目录下}
}module.exports = () => {                                    // 根据环境合并webpackif (isDev) {return merge(base, dev);} else {return merge(base, prod);}
}

1.4.2 webpack.dev.js

module.exports = {mode: 'development',
}

1.4.3 webpack.prod.js

const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');module.exports = {mode: 'production',plugins: [new CleanWebpackPlugin(),                         // 打包前清空dist目录new UglifyJsPlugin({                              // 打包后自动去除debugger、console等        uglifyOptions: {compress: {drop_debugger: true,               drop_console: true,pure_funcs: ['console.log', 'debugger']}},parallel: true}),],
}

1.5 查看效果

f1cff78dad1f80b8a3659f64ca17573d.gif

现在,我们已经实现了一个属于自己的模板,但是我们发现打包的速度可能会有一些慢。那究竟如何让自己的代码打包更快呢?

我们可以优化我们的webpack配置~

关于webpack的配置优化,后续,会单独写一个文章~

二、自定义命令下载自己的模板

我们都用过vue-clicreate-react-app等命令下载一个初始的vuereact模板,这里我要写一个属于自己的cli下载属于自己的模板(手动狗头)~

我的clinpm上的名字叫react-demo-cli,下载模板的命令是create-react-cli download

所以,在使用的时候,先输入命令 npm install react-demo-cli -g 然后 create-react-cli download 就可以啦~

效果是这样婶滴

a2c4e0927da33a66d4dcaa2ef296f7d0.png

最后

这一篇文章的核心简单来说有两条 - 配置webpack - 搭建一个自己的cli 只要这两件事情搞定了,问题就不难了

这里,主要说了从零搭建自己的react框架的思路、方法,效果和create-react-app等比起来,还是差很多。所以,我会不断优化自己和自己的代码~

还有: - 对于cli,只有使用方法,后续会有专门的文章讲解如何搭建一个自己的cli。这里还要感谢圈圈的圈的cli代码讲解~ - 对于webpack,我使用了webpack-dev-server来启动服务,这样启动的服务在控制台打印了很多东西,所以后续会改为自己编写脚本的方式~

下面,是clireact-templategithub地址

  • react-template
  • react-demo-cli

上面的文章如有不对之处,还请大家指点出来~我们共同进步~

最后,分享一下我的公众号「web前端日记」的二维码,欢迎前来大家关注~

3c0541ea21c8a5399cc5b4d5bce595ae.png
http://www.lbrq.cn/news/777637.html

相关文章:

  • 安徽鑫华建设有限公司网站/站长统计app软件大全
  • 广州市建设工程交易中心网站/小说关键词搜索器
  • 建设网站的推广的软文/百度官网下载安装
  • 中文网址/黑帽seo优化推广
  • 网站建设公司哪家好/上海优化公司排行榜
  • 网站自然排名怎么做/发布外链
  • 大学毕业网站设计代做/谷歌google浏览器
  • 网站大全全部/成都百度关键词排名
  • 能播放优酷视频的网站怎样做/上海seo关键词优化
  • wordpress页面文件目录/网络推广seo公司
  • 公司网站 制作/新东方一对一辅导价格
  • 沈阳做网站好的/公司推广咨询
  • 公司注册一站式/百度关键字优化
  • 四川省城乡与建设厅网站首页/最新中高风险地区名单
  • 做网站什么的好/优化大师最新版本
  • 搭建b2c网站/文件关键词搜索工具
  • html5手机网站建设/推广普通话的意义简短
  • 手表代购网站/优化营商环境工作总结
  • 惠州城乡住房建设厅网站/百度推广账户登录
  • 义乌网站建设/今天的新闻主要内容
  • 网站屏蔽搜索引擎/地推项目平台
  • 域名申请通过了网站怎么做/网站源码平台
  • 备案用什么网站名称好/视频号广告推广
  • 为客户网站做产品描述/农产品营销策划方案
  • ui在线设计网站/网站关键词优化wang
  • 怎样建立营销网站/营销策划主要做些什么
  • 济南手机网站定制价格/友情链接是什么
  • 建个网站做产品怎样/英文关键词seo
  • 做电商有那个网站/大金seo
  • 域名注册过程/seo代码优化步骤
  • 1 JQ6500语音播报模块详解(STM32)
  • 游戏中角色持枪:玩家操控角色,角色转向时枪也要转向
  • 支持任意 MCP 协议的客户端
  • 使用纯NumPy实现回归任务:深入理解机器学习本质
  • Day01_QT编程20250811
  • Linux系统编程Day12 -- 环境变量(初识)