发布网友 发布时间:2022-04-23 05:40
共3个回答
懂视网 时间:2022-04-10 07:16
拿到一个项目,我们应该如何去完成这个项目呢。 是直接上手? 还是先进行分析,然后再去解决呢?毫无疑问,如果直接上手解决,那么可能会因为知道目标所在,而导致出现各种问题。 所以,我们应该系统的分析这个项目,然后再去完成。
第一步: 需求
除了上面的基本需求之外,我们还需要实现登录、注册的相关功能,这样可以保证用户的唯一性,并在后台做出记录。
第二步:确定技术栈
第三步: 技术学习
确定了以上技术栈之后,我们就需要学习没有用过的技术了。 有人提倡的是边做项目边学习,这种方法是没有错的。 但是我认为提前学习是一种比较好的做法,即首先需要对相应技术的基本概念、api等做一个初步的了解,在这个基础上做项目,我们就可以知道应该在遇到问题时使用那些方法来解决,这时再进入边做项目边学习的阶段是比较理想的了。
比如上面的技术socket.io、redux、react-router、ant.design都是我之前没有用过的,就需要做一个简单的学习,大概记录一下博客加深印象即可。
第四步: 项目架构
实际上对于一个项目,最重要的是项目的架构实现,当我们组织好了项目的架构并对webpack打包的部署完成之后,再去写项目的逻辑就会简单的多了,因为我们已经有了整体的思路。 如果项目的整体架构考虑不周,那么就有可能造成代码的可读性、可扩展性、可维护性很差,使得项目质量不高。
以上大概就是本项目的架构了,至于.gitignore、REDEME.md等是一个项目所必须的且不重要,不再赘述 。
第五步: 开始写代码
就是从头开始一步一步完成这个项目,无需多说。
第六步: 遇到的难点以及解决思路、方案
做项目中难免会遇到一些问题,并且有时候还比较难解决,这时就需要我们及时的记录。 一来是可以记录问题、随时着手解决;二来是可以通过记录在以后遇到问题时可以及时的查看记录,不再踩相同的坑或者再去从头寻找、思考解决思路。
使用express、react、webpack打包、socket.io、mongodb、ant.design、less、es6实现聊天室
标签:php sock 有用 优势 html org 变量 dex 使用
热心网友 时间:2022-04-10 04:24
1.不要陷入纠结工具的怪圈我们团队一开始用React的时候,工具栈应该是grunt+grunt-react;写了一段时间感觉有局限,然后老大带头把工具换成了gulp+browserify+watchify+reactify,然后又愉快的写了大概半年吧,发现流行的库都上webpack了;于是我们的工具栈又变成了gulp+webpack+babel-loader。最后大家一致认为gulp是多余的,所以我们的工具栈又围绕webpack重新搭建了一遍。到最近我负责的一个内部项目,什么hot-mole-replacement、extract-text-plugin(让你在js里require('style.scss');这么写的玩意儿)一股脑的造。当然再后来因为业务需要我们又基于webpack搭建了自己的构建工具,这是后话……这将近一年半的折腾历史告诉大家,1)前端就是个大坑,1个月不学新知识你就会被社区遗忘2)现在上React真幸福,工具栈基本都稳定了(什么?你还不懂?用webpack!),不用花太多时间纠结。PS.HMR也就那样,虽然dan吹得神乎其神,但实际在项目里我发现大家还是习惯手动Cmd+R,因为项目大了以后rebuild也需要1、2秒。2.DOM操作是不可避免的但凡是上点儿规模的前端项目,没有DOM操作基本是不可能的。且不说最常见的后端「埋点」,你总得用DOMAPI去取值吧;就说一个最简单的,比如右手边这个「回到顶部」的按钮,你纯用React写一个试试。当然你会说什么requestAnimationFrame,什么ReactCSSTransitionGroupblahblahblah,真正到项目里你会发现还是DOMAPI简单。3.拥抱ES6,拥抱Reactv0.14这俩为什么放在一起说呢?因为Reactv0.14里提出了一个全新的组件概念叫做:无状态的函数式组件(Statelessfunctionalcomponents)。它大概长这样:varAquarium=({species})=>({getFish(species)});有没有发现被传统的createClass方法精简了很多?当然这样写组件也有很多局限,比如不能声明各种生命周期方法等等,但是在常见的前端业务场景中,纯render的组件不在少数。在这样的语法推出后,我们就能把这些组件更方便的抽出来复用了。此外,拥抱ES6还有很多的好处,比如在加载依赖的时候不用先varxxx=require('xxx');再varyyy=xxx.yyy;而是可以直接import{yyy}from'xxx';简洁明了。4.生态环境仍然在成长中,坑不少其中首先要口诛笔伐一下的就是react-router,我们从v0.10开始用,到现在v1.0。你知道为了升级这玩意儿我们改了多少次业务代码么?每次升级API都要变,无力吐槽。当年好不容易搞懂了v0.11,在博客里写了篇技术文章分享,结果后面的日子就是各种被催更……一个月前抽空就0.13版又重写了一遍教程,这不1.0版又出了,API基本全都不一样了!!不一样了!!一样了!!样了!当然除了坑也有不少高质量的生态环境产品,比如蚂蚁的antdesign。5.Server端渲染很美,至今没看见哪个规模级的产品用到可能是我孤陋寡闻吧,欢迎评论中跟进。自己摸索着写过一个最简单的server端渲染,但是这套逻辑如果套到我们现在的业务逻辑中,几乎可以直接*毙。为了实现server端渲染需要做出的tradeoff太多。6.React很简单,也很难简单是因为React的API真的很少,官网的各种文档花一个下午也能看个七七八八(此时此刻再看看Angular……)。但是当你以为你真的搞懂React的时候,看看React源码剖析系列-解密setState-purerender-知乎专栏这篇文章开头提的问题,有多少人能不假思索的答对呢?(顺便安利一下,我们团队的知乎专栏,目前处于死磕React的状态)当你真正在业务项目中使用React的时候,你会发现它的生命周期比你想象的复杂;它的API背后的逻辑比你以为的麻烦。当然,首先你要踩进这个坑。7.对于楼上某位仁兄表示《React:引领未来的用户界面开发框架》这本书太难的回答,作为译者之一表示对不起你。作为补偿,所有购买本书的同学均可凭拍照私信我咨询React相关的问题。
热心网友 时间:2022-04-10 05:42
不要设置视图引擎
app.set('views','./views')
app.set('view engine','jade');
//Don't do this
然后你需要引入静态资源
如果你使用webpack,需要把dist里面打包好的文件作为静态资源引入
否则需要把所有的components目录作为静态资源引入
你的React就是简单的静态资源
app.use(express.static(path.join(__dirname,'src')));
最后直接在路由返回文件
app.get('/',function(req,res){
res.sendFile(path.join(__dirname,'index.html'))
})