试下1个半月能不能水出个毕设

1、背景

大概五月中就要开始答辩了,我给自己定的时间是五月搞定毕业设计。毕业设计做的是一个前后端分离的springboot项目,目前已经找到了对标的开源项目,是一个基于ruoyi脚手架开发的项目

2、当前情况

现本人在某家公司实习,技术栈为windows + .NET,客户端开发
之前自学的是Linux下c/c++网络编程那一套

对于java,javaweb只能说大概了解,简单写过。但是对于springboot那一套,是一点都没有接触过,连概念都不太熟悉

3、当前目标

能将那个开源项目看懂,同时改成自己想要的样子,水出一篇毕业论文,对于springboot等的知识就不作太深入的研究,毕竟现在工作或者是以后一两年的方向都不太可能为java

4、开始时间

2023/03/15

5、计划

大体的思路为把项目的技术点拆分出来,然后每个先了解一下,了解得差不多了,就直接看项目,毕竟最终目的还是看项目,然后在看项目的期间进行查漏补缺即可

技术要点,摘自项目的README.md
image.png

主要思路为以SpringBoot为核心,单独集合每个技术点,写出个小demo,就差不多了,
-- springboot + vue
-- springboot + jwt
-- springboot + springsecurity
(上述搭配仅作举例使用)

6、开始

springboot+mybatis+MySQL

http://blog.csdn.net/yuran06/article/details/122012790
简单尝试但是没有成功跑通,这个时候已经知道SpringBoot + Mybaits + MySQL的大概用法

springboot + thymeleaf

http://blog.csdn.net/weixin_39106990/article/details/105530443
image.png
最后的第二个例子也成功
image.png

SpringBoot + MyBatis + MySQL实现登录注册功能

http://blog.csdn.net/byteArr/article/details/80955703


上手测试:

注册功能 成功
image.png
image.png


用户名重复 成功
image.png


正常登录测试 成功
image.png

非常不错,拉下来配置一下就能够正常使用,接下来分析总结一波


分析总结:

参考文档:
http://baiyuliang.blog.csdn.net/article/details/109254387
http://baiyuliang.blog.csdn.net/article/details/109255592
http://it.cha138.com/php/show-36066.html
http://blog.51cto.com/u_12835254/5273069
这里面有两条流程,一条是登录,另外一条是注册,这里分析一下登录流程,注册流程也是差不多的
image.png
到这里,整个调用,每个模块应该做什么,期间的流程也大概了解了


问题

问题:IDEA社区版没有spring Initializr
解决:http://blog.csdn.net/ErickPang/article/details/128794674

问题:从github拉下来运行之后报错
Exception in thread "main" java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap')
解决:http://blog.csdn.net/username666/article/details/108203239

问题:sql配置,因为该项目中没有对应的sql文件,所以,需要看看如何配置
解决:
http://blog.csdn.net/qq_45830969/article/details/122697715
sql文件在博客中有
汇总:

CREATE DATABASE login;
USE login;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` bigint(32) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


问题:启动报错
Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver'
解决:http://blog.csdn.net/qq_41943867/article/details/90574135

问题:为什么当前项目可以访问我的html,而不是通过什么controller里面常规的定义?
image.png
image.png
猜想:是下面的这个配置,导致你直接在url上输入就可以访问了image.png
猜想验证测试:那么按照这个说法,那我现在直接新建一个test.html,其他的对于什么controller、service之类的我都不处理,如果最后可以直接访问我这个test.html,那么也就是说明我的猜想是正确的,否则,再看看啥回事
image.png
结论:静态页面不用管什么controller之类的,只需要做好配置,写好html就行了


TODO:对上述项目的改进

1、将所有的界面改成用vue显示
2、集成Spring Security
3、集成Redis & Jwt
image.png

本文转载于网络 如有侵权请联系删除

相关文章

  • 品味Spring Cache设计之美

    最近负责教育类产品的架构工作,两位研发同学建议:“团队封装的Redis客户端可否适配SpringCache,这样加缓存就会方便多了”。于是边查阅文档边实战,收获颇丰,写这篇文章,想和大家分享笔者学习的过程,一起品味SpringCache设计之美。1硬编码在学习SpringCache之前,笔者经常会硬编码的方式使用缓存。举个例子,为了提升用户信息的查询效率,我们对用户信息使用了缓存,示例代码如下:@Autowire privateUserMapperuserMapper; @Autowire privateStringCommandstringCommand; //查询用户 publicUsergetUserById(LonguserId){ StringcacheKey="userId_"+userId; Useruser=stringCommand.get(cacheKey); if(user!=null){ returnuser; } user=userMapper.getUserById(userId); if(user!=null){ stringComma

  • 非科班转行指北:从零开始的java开发

    本文作者——tianyiTianyi(づ ̄3 ̄)づ╭❤~ 非科班CS指北:从零开始的java开发我是本科211,能源与动力工程,非计算机专业。大学的时候发现自己不太喜欢现在的专业,觉得计算机挺有意思的,就自学了计算机。主要做的是java开发。一开始不知道自己几斤几两,就想着先投一些小公司试试。然后就在拉钩上投了一堆小公司,结果只有一个给安排了面试。然后面试结束之后,觉得面试官问的问题太水了。于是就觉得自己水平还行,就投了腾讯、阿里、美团这些。安全复工如何做好安全复工面试心得在春招之前,有向很多学长请教经验。大概就是把自己的项目吃透、基础掌握扎实、算法和编程能力要强。所以春招的时候也是按照这四个方向准备的。1.面试状态。腾讯的每次面试之前,我的时间基本上都在学习,所以状态保持的很好。美团有点膨胀,钉钉不约时间还很紧张,面试的状态不好。2.基础知识。基础知识指得是语言基础、算法、数据结构、计算机网络、操作系统、数据库、编译原理这些。虽然我是非计算机相关专业,但是这些内容平常也都有系统的学过,面试准备的过程中也为基础花了很多时间。不管专业是不是计算机相关,感觉想要去大厂,基础必须扎实才行。3

  • python并发2:使用asyncio处理并发

    asyncioasyncio是Python3.4之后引入的标准库的,这个包使用事件循环驱动的协程实现并发。asyncio包在引入标准库之前代号“Tulip”(郁金香),所以在网上搜索资料时,会经常看到这种花的名字。什么是事件循环?wiki上说:事件循环是”一种等待程序分配事件或者消息的编程架构“。基本上来说事件循环就是:”当A发生时,执行B"。或者用最简单的例子来解释这一概念就是每个浏览器中都存在的JavaScript事件循环。当你点击了某个东西(“当A发生时”),这一点击动作会发送给JavaScript的事件循环,并检查是否存在注册过的onclick回调来处理这一点击(执行B)。只要有注册过的回调函数就会伴随点击动作的细节信息被执行。事件循环被认为是一种虚幻是因为它不停的手机事件并通过循环来发如何应对这些事件。对Python来说,用来提供事件循环的asyncio被加入标准库中。asyncio重点解决网络服务中的问题,事件循环在这里将来自套接字(socket)的I/O已经准备好读和/或写作为“当A发生时”(通过selectors模块)。除了GUI和I/O,事件循环也经常用于在

  • “毒蘑菇”治重度抑郁,获美国“突破疗法”

    你是不是从小听说,“野蘑菇有毒,不能乱吃”?近年来越来越多的科学研究发现,原本被认为是“致幻剂”的那些物质,对于精神疾病治疗,有很好的效果。最近,一种从“神奇蘑菇”中提取的物质被美国FDA授予了突破性疗法。这种东西叫做裸盖菇素,它究竟是什么东西?连续两年成为“突破性疗法”突破性疗法(breakthroughtherapy)是美国食品药监局(FDA)授予药物的一种称呼。得到这一称呼的药物会在流程上获得加快开发和审查。想要获得这一称呼,药物需要符合两点要求:1.用来治疗严重的或者威胁生命的疾病;2.需要初步临床证据,证明这种药至少在一个关键治疗节点上比其它疗法有明显优势。裸盖菇素(Psilocybin)疗法在去年和今年两次获得了这一称号。△裸盖菇素分子式第一次:去年10月,生命科学公司CompassPathway研制,裸盖菇素被作为心理治疗的辅助。用于治疗难治型抑郁症(treatment-resistantdepression,TRD)第二次:今年11月,Usona研究所正在对重度抑郁症(majordepressivedisorder,MDD)进行2期临床实验。这项试验今年秋天开始,预计2

  • 经典回顾!Github 上打星超过 1 万的可复现顶会论文项目

    AI科技评论按:ZaurFataliyev是在LG电子的一名机器学习工程师,为了方便大家对带有复现代码的经典顶会论文进行查询,他在GitHub上将这些论文进行了统一打包:https://github.com/zziz/pwc,该名单将每周更新一次。AI科技评论将当中用户打星数超过1w的论文进行简要编译,以飨读者。2017年1)BridgingtheGapBetweenValueandPolicyBasedReinforcementLearning缩小价值与强化学习政策差距的方法打星数:46593收录顶会:NIPS论文链接:http://papers.nips.cc/paper/6870-bridging-the-gap-between-value-and-policy-based-reinforcement-learning.pdf复现代码:https://github.com/tensorflow/models简介:论文基于熵正则化下的softmax时间值一致性与策略最优性之间的关系,为价值和强化学习政策建立新的联系。具体而言,作者证明了对应任意动作序列的最优熵正则化策略概率的sof

  • 未来的“抖音神曲”将Made in AI?

    编辑|sunlei 发布|ATYUN订阅号7月24日消息,据国外媒体报道,字节跳动旗下的子公司抖音(海外名TikTok)又完成了一项收购。收购的对象为利用人工智能进行音乐编曲的英国初创公司-Jukedeck。Jukedeck是谁?Jukedeck成立于2012年,总部位于伦敦。在被抖音纳入麾下之前,Jukedeck开发了一款软件,该软件通过人工智能技术,根据用户自由选择的类型、曲风和时长,在几秒钟之内在线生成独特的音乐素材,自动为视频配乐。Jukedeck不需要创作者懂得音乐或者编辑,便可随心所欲地创造属于自己的音乐。Jukedeck由Stobbs和EdNewton-Rex在2012年共同创办,是一家音乐科技公司。在获得“剑桥企业”(CambridgeEnterprise)基金与“剑桥创新基金”(CambridgeInnovationCapital)等多项融资后,Jukedeck在2015年推出基于人工智能合成技术的在线音乐创作应用JukedeckMAKE。Jukedeck诞生至今,虽然规模不大,但一直致力于AI音乐技术的挖掘,追求音乐的个性化和民主化,努力让更多人体验到原创个性化音乐

  • OushuDB入门(五)——ETL篇

    版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/wzy0623/article/details/80281643一、初始装载1.用sqoop用户建立初始抽取脚本 本示例要用Sqoop将MySQL的数据抽取到HiveORC外部表,然后利用OushuDBORC外部表功能将数据装载到内部表中。表1汇总了示例中维度表和事实表用到的源数据表及其抽取模式。 源数据表HDFS目录对应RDS模式中的表抽取模式customer/data/rds/customercustomer整体、拉取product/data/rds/productproduct整体、拉取sales_order/data/rds/sales_ordersales_order基于时间戳的CDC、拉取表1 (1)覆盖导入 对于customer、product这两个表采用整体拉取的方式抽数据。ETL通常是按一个固定的时间间隔,周期性定时执行的,因此对于整体拉取的方式而言,每次导入的数据需要覆盖上次导入的数据。 (2)增量导入 Sqoop提供增量导入模式,用于只导入比已经导入行新的数据行。表

  • 案例 | 浅葱小唱:一家连锁音乐餐厅的运营之道

    分享用户:音乐餐厅模式的创始者——浅葱小唱® 夏靖Hi,我是夏靖,浅葱小唱®的视觉规划指导与技术部门负责人。浅葱小唱®是一家以新派川菜为主的音乐餐厅,成立于2014年底,也是音乐餐厅模式的创始企业,由深圳著名音乐人郭翔牵头创立。浅葱代表的是一种夏日的颜色,小唱则代表一种状态,一种对音乐的坚持和理想。所以对于我们浅葱来说,骨子里的音乐血液是挥之不去的。为顾客提供平价又有趣的美好小生活(除了吃吃喝喝之外还有各类演出和手工艺学习班)是我们一直以来的目标。浅葱X麦客浅葱从一家门店发展到现在全国5家门店(还在陆续开店中)仅仅用了2年的时间,如果说一家门店还能采取点对点的沟通方式,对于连锁门店来说很显然就不再可能了。从财务到演出再到品牌合作,交叉联系成为了运营的日常。所以,自动化和标准化的沟通显得尤为重要。浅葱目前门店的运营和业务处理,都是通过麦客的表单系统运作的:包括门店特殊演出申请/应聘/门店品牌合作/印刷物料申报/点单系统修改/大宗物品采购申报表/艺人资料表……等等。除了能提高效率之外,还潜移默化地规范了门店对于业务处理的能力,即便是新进员工,不了解公司架构,所提交的业务申请也能准确分配到相

  • 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)

    《BriefHistoryofMachineLearning》介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机、神经网络、决策树、SVM、Adaboost到随机森林、DeepLearning.《DeepLearninginNeuralNetworks:AnOverview》介绍:这是瑞士人工智能实验室JurgenSchmidhuber写的最新版本《神经网络与深度学习综述》本综述的特点是以时间排序,从1940年开始讲起,到60-80年代,80-90年代,一直讲到2000年后及最近几年的进展。涵盖了deeplearning里各种tricks,引用非常全面.《AGentleIntroductiontoScikit-Learn:APythonMachineLearningLibrary》介绍:这是一份python机器学习库,如果您是一位python工程师而且想深入的学习机器学习.那么这篇文章或许能够帮助到你.《HowtoLayoutandManageYourMachineLearningProject》介绍:这一篇介绍如果设计和管理属于你自己的机器学习项目的文章,里面提供了管理模版、

  • Android 5.x漏洞:黑客可以绕过屏幕密码进入系统

    很多Android用户会选择使用锁屏密码保护设备,但最新爆出的漏洞却令人震惊:任何人无需复杂的操作即可绕过锁屏直接进入你的系统! 攻击者可以通过漏洞导获取上锁设备的全部权限:输入超长的字符串导致锁屏和相机的崩溃,直接进入主屏。接着攻击者可以打开USB调试功能,连接电脑,最终获取手机中的大量信息。此漏洞存在于Android5.x<=5.1.1的版本中,UTAustin团队在6月25日提交漏洞给Android后,Android在9月9日的新版本(buildLMY48M)中修复了该漏洞。 需满足的两个条件攻击者与设备需要有物理接触 锁屏方式必须使用密码(锁屏图案或者pin密码都不可以)PoC视频(Nexus4,Android版本5.1.1buildLMY48I)攻击过程在锁屏界面点击“紧急拨号”。2.输入几个字符,比如10个星号。双击字符高亮选中,然后点击复制。再在输入区域粘贴,这样字符数量就翻倍了。重复这一过程,直到输入区域中的字符串太长了,双击已经不能再高亮这些字符了。重复的次数大约是11次左右。3.回到锁屏界面,然后左划呼出相机,下拉通知抽屉打开通知,然后点击右上方的一个设置(齿

  • AttributeError: module ‘seaborn‘ has no attribute ‘histplot‘

    问题描述:在用seaborn作图时报错:AttributeError:module‘seaborn’hasnoattribute‘histplot’这种情况一看就是Python库的版本问题,我用的AnacondaBase环境里的seaborn版本为0.10.1。解决方法:更新一下seaborn库,在AnacondaPrompt下输入pipinstall-Useaborn即可:pipinstall-Useaborn-ihttp://pypi.douban.com/simple--trusted-hostpypi.douban.com复制

  • bs和cs的区别与优缺点_CS和CIS的联系与区别

    一,B/S结构(baiBrowser/Server,浏du览器/服务器模式),zhi是WEB兴起后的一种网络结构模式,WEB浏览器是客户端dao最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser英[‘braʊzə]美[‘braʊzɚ]),如NetscapeNavigator或InternetExplorer,服务器安装SQLServer、Oracle、MYSQL等数据库。浏览器通过WebServer同数据库进行数据交互。二,区别(C/S与B/S):1.硬件环境不同:C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。B/S建立在广域网之上的,不必是专门的网络硬件环境,例如电话上网,租用设备.信息自己管理.有比C/S更强的适应范围,一般只要有操作系统和浏览器就行。2.对安全要求不同:C/S一般面向相对固定的用户群,对信息安全的控制能力很强。一般高度机密的信息系统采用C/S结构适宜。可以通过B/S发布部分可公开信息。B/S建立在广域网之上,对

  • 使用mongodb作scrapy爬小说的存储

    一、背景:学习mongodb,考虑把原使用mysql作scrapy爬小说存储的程序修改为使用mongodb作存储。 二、过程: 1、安装mongodb (1)配置yumrepo (python)[root@DL~]#vi/etc/yum.repos.d/mongodb-org-4.0.repo [mngodb-org]name=MongoDBRepositorybaseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/4.0/x86_64/gpgcheck=0enabled=1 (2)yum安装 (python)[root@DL~]#yum-yinstallmongodb-org (3)启动mongod服务 (python)[root@DL~]#systemctlstartmongod (4)进入mongodb的shell (python)[root@DL~]#mongoMongoDBshellversionv4.0.20 ... Toenablefreemonitoring,runthefollo

  • LLE

    importnumpyasnp importoperator importmatplotlib.pyplotasplt fromsklearnimportdatasets,decomposition,manifold fromitertoolsimportcycle frommpl_toolkits.mplot3dimportAxes3D importos defload_data(): #生成瑞士卷数据 swiss_roll=datasets.make_swiss_roll(n_samples=1000) returnswiss_roll[0],np.floor(swiss_roll[1]) ''' defLocallyLinearEmbedding(self,n_neighbors=5,n_components=2,reg=1E-3, eigen_solver='auto',tol=1E-6,max_iter=100, method='standard',hessian_tol=1E-4,modified_tol=1E-12, neighbors_algorithm='au

  • TypeScript —— 枚举类型 enum 的红与黑

    TypeScript设计的初衷是JavaScript+Types,所有TypeScript的特性不改变运行时的行为 反过来说,如果在TS代码中去掉静态类型,应该得到一份完整有效的JS代码 这样的好处在于,我们可以通过ESbuild而不是tsc完成我们的TS代码到JS代码的转换 但实际上TypeScript中有一个特殊类型破坏了这种构想,它就是Enum     一、什么是Enum 在TypeScript中可以通过enum来定义一组常量,并将这些常量放到同一个对象中管理: enumLanguage{ ZH_CN='zh_CN', ZH_HK='zh_HK', ZH_TW='zh_TW', EN_US='en_US', EN_GB='en_GB', }复制 和type、interface类似,enum可以直接作为静态类型使用 functiongetLocals(lang:Language){ return`hello${lang}`; }复制 但在调用这个函数的时候,传入的参数不能是enum的值,而应该是enum的引用   从这里就会发现enum的特性

  • Groovy In Action 笔记 (8) -- MOP

    /** *@author:ZackZhou *@date:Createdin2020/10/92:31PM *@description: *AllclassesthatarecompiledbyGroovyimplementtheGroovyObjectinterface *Again,you’refreetoimplementanysuchmethodsinyourGroovyclasstoyourliking. *Ifyoudon’t,thentheGroovycompilerwillinsertadefaultimplementationforyou. *Thisdefaultimplementationisthesameasifyou’dinheritfromGroovyObjectSupport, *whichbasicallyrelaysallcallstothemetaclass. * *publicabstractclassGroovyObjectSupportimplementsGroovyObject{ *publicObjectinvokeMethod(Strin

  • python 创建链表

    1#-*-coding=utf-8-*- 2#software:算法学习 3#datetime:2020/4/811:13上午 4 5classNode(object): 6 7def__init__(self,data=None,next=None): 8self._value=data 9self._next=next 10 11defget_value(self): 12returnself._value 13 14defget_next(self): 15returnself._next 16 17defset_value(self,new_data): 18self._value=new_data 19 20defset_next(self,new_next): 21self._next=new_next 22 23 24classLinkList(object): 25 26def__init__(self): 27self._head=Node() 28self._tail=self._head 29self._length=0 30 31defhead(self): 3

  • bounds和frame的区别?

    frame和bounds都市用来描述一块区域的 frame是以父控件的左上角为原点,可视范围相对于父控件 bounds:描述是可视范围在内容哪个区域,相对于内容.       可视化区域在内容中显示区域,bounds的x,y可以改(改的是内容原点的位置) 任何控件都有自己的内容,而且这个内容无限大 子控件都市相对于内容   UIView*redView=[[UIViewalloc]init];   redView.frame=CGRectMake(50,50,200,200);   redView.backgroundColor=[UIColorredColor];   [self.viewaddSubview:redView];   _redView=redView;       UISwitch*switchV=[[UISwitchalloc]init];   [_

  • FPGA之千兆网接口设计与使用(不调用IP核,适用于Alter与Xilinx,简单粗暴实现udp协议封装)

       之前基于Alter平台写了调用IP核实现千兆网接口设计的功能,但是其实觉得不是特别的方便,毕竟现在的工作都是vivado跟Quartus来回切,有关三速以太网的IP核设置也比较麻烦,因此想到了这个一劳永逸的办法,就是不调用IP核,自己设计代码来实现,可以在任何开发平台迅速应用。   我自己设计的项目主要用于红外热像仪的千兆网传输,先来看下RTL结构图          cmos_tau2模块:红外温度数据读取模块,这是根据具体的红外时序图设计的红外数据采集模块; cmos_fifo:红外数据转接模块,主要将14bit的红外数据转接为8bit的数据对接千兆网接口模块; gmii:自主设计的千兆网接口模块,对红外采集图像进行千兆网传输  最后来看下具体的显示成果:    其实关于如何设计代码封装千兆网这个接口,可以完全参照我之前写的https://www.cnblogs.com/tanqiqi/p/9441973.html一文,善用状态机,其中

  • 【紫光同创国产FPGA教程】【第十七章】AD实验之AD9238波形显示

    本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处(http://www.alinx.com)。 适用于板卡型号: PGL22G/PGL12G 1.实验简介 本实验练习使用ADC,实验中使用的ADC模块型号为AN9238,最大采样率65Mhz,精度为12位。实验中把AN9238的2路输入以波形方式在HDMI上显示出来,我们可以用更加直观的方式观察波形,是一个数字示波器雏形。 AN9238双路65M采样12位ADC模块实验预期结果 2.实验原理 黑金高速AD模块AN9238为2路65MSPS,12位的模拟信号转数字信号模块。模块的AD转换采用了ADI公司的AD9238芯片,AD9238芯片支持2路AD输入转换,所以1片AD9238芯片一共支持2路的AD输入转换。模拟信号输入支持单端模拟信号输入,输入电压范围为-5V~+5V,接口为SMA插座。 AN9238模块的原理设计框图如下: 关于AD9238的电路具体参考设计请参考AD9238的芯片手册。 2.1单端输入及运放电路 单端输入AD1和AD2通过J5或者J6两个SMA头输入,单端输

  • 如何配置 ESLint 工作流

    一、从零配置ESLint工作流 eslintprettierstylelinthuskylint-stagedtypescriptbabel-eslinteslint-config-airbnb-base eslint-config-alloy 为构建项目代码质量保驾护航。 传承ESLint推崇的插件化、配置化的理念,满足个性化需求(即让专业的工具做擅长的事)因此,各位可以选择自己需要的功能进行集成。 二、什么是代码检查 代码检查主要是用来发现代码错误、统一代码风格。 在JavaScript项目中,我们一般使用ESLint来进行代码检查,它通过插件化的特性极大的丰富了适用范围 搭配babel用来检查js,ES6的代码,搭配typescript-eslint之后,甚至可以用来检查TypeScript代码。 三、配置ESLint   1、新建一个文件夹,打开命令行npminit-y创建属于新项目的package.json   2、安装依赖npmieslintbabel-eslinteslint-config-alloy-S (这里以腾讯eslint库为例,es

相关推荐

推荐阅读