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

react-问卷星项目(1)

学习的一位MOOC老师的经验,记录一下学习的过程

本项目技术栈:React18+TS4+AntDesign5+Next.js13

项目:低代码,B/C

react官方文档

核心价值:

组件化:不是React原创,但在React中流行开来

数据驱动视图:定义好数据和UI的显示规则,即UI=f(state).只关注业务数据的修改,不用再操作DOM,增加开发效率。直接操作DOM风险大,容易影响性能等,vue也是同理。

开始

React常见脚手架

vite和webpack的区别

Create-React-App内部使用webpack打包

Vite既是构建工具,又是打包工具

  • Vite比CRA打包项目更快,快是因为使用了ES Module(仅开发环境)

ESModule

分别创建index.html文件和main.js文件,在index中导入main.js

确定是否下载了http-server,没有的话执行下面的命令下载,如果你还没有安装npm,可以先安装Node.js,它会自带npm。访问 node.js官网 下载并安装。使用Sudo是因为我没把npm配置到全局,在mac中进行操作需要权限)

sudo npm install -g http-server

下载完后,进入项目的根目录,用下面这段指令在指定端口(8881)启动

http-server -p 8881

可以看到控制台有输出。这是webpack传统的打包方式,会把所有内容打包成mean.js后一次性塞给html文件,vite可以把零散文件通过ES Modul引用,即export/import,webpack会将几个文件压缩到一起并打包,vite使用script的时候添加type="module"即可按需饮用,wenpack需要全部结合,计算需要时间,所以vite快

安装软件

  • node.js 使用国内的npm镜像,不使用国内的可能会慢(国内镜像)
  • VSC(Visual Studio Code)
  • 安装git

创建项目

Create-React-App

创建命令,这条是官方提供的,但我使用的时候莫名卡半天,也不报错,也没有进度。

npx create-react-app myApp

解决方法如下(非mac电脑可忽略sudo)

用npm下载和创建名为my-app的项目,首先项目名称中不能包涵大写字母,不然会报错,后缀--template typescript的意思是按照ts的模版进行创建,不然会默认为js语言

// 下载相关包
sudo npm install -g create-react-app// 配置项目
create-react-app my-app --template typescript

在App.tsx文件中更改内容再重新保存可以更换启动项目时展示页面的内容。

Vite

官网创建指令

npm create vite@latest my-app -- --template react-ts

在App.tsx文件中更改内容再重新保存可以更换启动项目时展示页面的内容。

总结

选择Create-React-App

  • 是React官网推荐的
  • 时间更久,可查找资源更多
  • 要考虑稳定性,求稳不求新

配置编码规则

Prettier统一代码功能

在项目根目录执行下面的指令 --> package.json文件中查看是否成功添加devDependencies模块

npm i prettier eslint-config-prettier eslint-plugin-prettier --save-dev

添加成功后在vsc中搜索prettier插件,没有下载点击下载就行。

在package.json文件中,在scripts模块中添加如下语句,保存后使用第二句指令启动项目,会看到更改了相应操作的文件目录,即将单引号更换为双引号,可自行查看是否生效。

"format": "prettier --write 'src/**/*.+(js|ts|jsx|tsx)' "npm run format

接下来在项目根目录下创建.vscode文件夹(注意这个vscode前面有个小圆点),并在文件夹下面新建文件settings.json,配置如下,意思是在保存的时候自动更改格式,而不需要像前面一样另外使用指令运行。

{"editor.codeActionsOnSave": {"source.fixAll.eslint": "explicit"}
}

我在这一步碰到了一个问题,就是保存文件的时候修改并没有生效,搜索了一下,很大概率还是缺少了eslint文件,因为前面缺失了一节课,所以我就按照自己的步骤往下添加。

先在根目录下载eslint,指令为下列代码中的第一句,然后在根目录创建一个文件.eslintrc.js,其中的配置如下,module会有报红波浪线,不用理会,记得文件前面要加.不然没效果,保存好了之后可以随便拿一个文件进行修改,会看到单引号路径会报错,保存后会自动修改为双引号,就表示配置生效了。

npm install eslint --save-dev
// .eslintrc.js
module.exports = {env: {browser: true,es2021: true,},extends: ["eslint:recommended","plugin:react/recommended","plugin:@typescript-eslint/recommended","plugin:prettier/recommended",],parser: "@typescript-eslint/parser",parserOptions: {ecmaVersion: "latest",sourceType: "module",},plugins: ["react", "@typescript-eslint"],rules: {// 你的规则配置},
};

提交到github仓库

参考文章:提交到github

创建一个github账号,可以通过下面这一条指令检查.ssh是否存在,我使用的时候没有查出来,但是后面创建新的内容时又显示有这个文件。

cd ~/.ssh

若提示“-bash: cd: ~/.ssh: No such file or directory” 那就说明.ssh文件夹不存在,那么则进行下一个步骤,否则就是将原来的.ssh文件夹备份以下,亦或是切换到其他路径下建立ssh。输入以下命令来创建ssh,xxx@xx.com为你注册GitHub时的邮箱账号,命令执行成功后,会有以下提示

$ ssh-keygen -t rsa -C xxx@xx.com

这个默认路径最好不要改,我就是改了,结果推送项目的时候失败了。当然如果知道怎么处理这种情况当我没说

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/yuyuhang/.ssh/id_rsa):       
// .ssh默认路径,不输入则不修改
Enter passphrase (empty for no passphrase):                              
// 密码长度至少为4,否则失败
Enter same passphrase again: 
Your identification has been saved in /Users/yuyuhang/.ssh/id_rsa.
Your public key has been saved in /Users/yuyuhang/.ssh/id_rsa.pub.
The key fingerprint is:
8d:d3:5f:31:ae:13:48:f0:78:df:a1:8f:a5:a4:c0:06 352091626@qq.com
The key's randomart image is:
+--[ RSA 2048]----+
|        .        |
|         +       |
|      E . +   +  |
|       o * o + + |
|        S + = =  |
|       . o + O   |
|          . * .  |
|             .   |
|                 |
+-----------------+

接下来就是在GitHub上创建SSH。首先登陆你的GitHub,右上角用户头像下选择Settings,在SSH Keys 选项里面添加ssh,然后创建一个仓库,仓库不需要勾选创建README.md。

Title:xxx@xx.com
Key:打开生成的id_rsa.pub文件(/User/yourname/.ssh/is_rsa.pub),将其中内容拷贝过来

创建成功后,查看项目中是否有README.md文件,没有的话就执行下面的步骤

$ touch README.md                                         
//新建一个README文档,若上一步勾选了创建README.md,提交时导致冲突
$ git init                                                
//初始化本地仓库
$ git add README.md                                       
//添加刚刚创建的README文档
$ git commit -m "你的注释...."                             
//提交到本地仓库,并写一些注释
$ git remote add origin git@github.com:yourname/xxxx.git  
//连接远程仓库并建了一个名叫:origin的别名,当然可以为其他名字,但是origin一看就知道是别名,youname记得替换成你的用户名
$ git push -u origin master                              
//将本地仓库的文件提交到别名为origin的地址的master分支下,-u为第一次提交,需要创建master分支,下次就不需要了

链接期间可以用下面这条指令查看和github的链接是否正常,如果链接不正常那就先解决连接问题,如果这个链接返回的结果是正常的,但是项目推送的时候有问题,可以考虑下是不是我遇到的两个,1 生成的钥匙更换了默认路径  2 使用https提供的项目链接进行操作(应该使用SSH)

ping github.com

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【JAVA基础】实现Tomcat基本功能
  • 2024年【起重信号司索工(建筑特殊工种)】考试题及起重信号司索工(建筑特殊工种)免费试题
  • Java中的类型转换 Day4
  • Vue+SpringBoot+数据库整体开发流程 2
  • uniapp 懒加载、预加载、缓存机制深度解析
  • 动手学深度学习(pytorch)学习记录27-深度卷积神经网络(AlexNet)[学习记录]
  • 农业小气候观测站
  • 【python】 @property属性详解 and mysql的sqlalchemy的原生sql
  • PIN AI获得a16z CSX、Hack VC和全明星天使的1000万美元融资,推出个人AI开放平台
  • HarmonyOS开发之Swiper的使用(跳转到指定索引的方法)
  • 【百日算法计划】:每日一题,见证成长(011)
  • 第二章:表操作
  • 从生成器函数Generator出发,聊聊Async await
  • 多线程相关面试题
  • 免费扫描试卷的软件有哪些?5个软件帮助你轻松进行试卷扫描
  • ES6指北【2】—— 箭头函数
  • 【面试系列】之二:关于js原型
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 3.7、@ResponseBody 和 @RestController
  • css属性的继承、初识值、计算值、当前值、应用值
  • EventListener原理
  • GitUp, 你不可错过的秀外慧中的git工具
  • Gradle 5.0 正式版发布
  • Intervention/image 图片处理扩展包的安装和使用
  • Java|序列化异常StreamCorruptedException的解决方法
  • Javascript编码规范
  • Mac转Windows的拯救指南
  • Markdown 语法简单说明
  • MaxCompute访问TableStore(OTS) 数据
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • OSS Web直传 (文件图片)
  • Redis学习笔记 - pipline(流水线、管道)
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vue2.0项目引入element-ui
  • Web Storage相关
  • WebSocket使用
  • 从PHP迁移至Golang - 基础篇
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 多线程 start 和 run 方法到底有什么区别?
  • 嵌入式文件系统
  • 如何实现 font-size 的响应式
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 如何在 Tornado 中实现 Middleware
  • 实现简单的正则表达式引擎
  • 通过git安装npm私有模块
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • #FPGA(基础知识)
  • #数学建模# 线性规划问题的Matlab求解
  • (3)llvm ir转换过程
  • (function(){})()的分步解析
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (不用互三)AI绘画工具应该如何选择
  • (第一天)包装对象、作用域、创建对象
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)SSM环卫人员管理平台 计算机毕设36412