猿学~自己一人如何去做一个web项目

  三思而后行

  当你被自己的想法激起心中豪情的时候,一定要按下心情,冷静的思考一下,思考点包括以下几个部分:

 

  这个Web项目所需要的知识和能力是否在自己所掌握的范围内,这个是技术前提,如果项目本身技术复杂度过高,那么你在开发的时候所面对的压力就非常大,而且挫败感也很高,项目很容易夭折。

  项目的需求能否清晰描绘,这一点非常重要,因为只有你能细致的把一个项目拆分成一条条需求,你才能对所有的技术实现点有个预估,也才能对项目所需要的时间做个预判。

  项目是否值得做,这个是个预防针,实际上很多时候个人项目都是拍脑袋想出来的,由于刚开始没有想好就一腔热血,一上来就开个项目工程文件开始啪啪啪的写代码,很容易做着做着就没有动力了,最后有一天突然觉得这玩意也没啥意思,于是草草的扔了,虎头蛇尾的情况太常见了。

  技术选型怎么做,是做一个网站还是做一款app或者是多平台的,后端用什么语言来搭建,需要使用什么框架,这些选型需要在心中有底,我建议做项目的时候选用自己最熟悉、生态最丰富的语言和框架,除非你只想练个手,否则不应当用冷门的。

  所以项目未动,思考先行是必须的,通过仔细的思考我们可以判断自己所谓的“灵感”是不是伪灵感,而自己又能否适应开发期的单调枯燥,这些需要慎重对待,不能掉以轻心。

  产品需求清单

  经过仔细的思考之后,依旧觉得项目可行的话,那么就应该进入“产品经理”的角色,作为一个人的项目,产品需求倒未必只能是一个人思考,也可以找朋友等人探讨,征求一下别人的想法之类的。

  产品需求需要确保每一步都能执行,所以理论上越详细越好,在你思索产品的时候,你应该对界面上所需要的具体元素有清晰的认知,而且还对它牵扯到后端的功能如何组织和拆分。

  在产品需求阶段,也是你把项目原型丰富的阶段,这个时候其实至关重要,很多时候你会发现你真正想要的和你原本打算要的已经完全不同了,最开始的打算可能根本行不通,同时你也有可能蹦出新的灵感,这些又会对原有的产品需求做或大或小的更改,说不定还会推翻原有的需求。

  基本上到这个时候,原本的激情已经逐渐平淡,理智重新归位,但对产品未来的期待感还是很强,这时候你需要考虑的情况实际上是非常多的,也是你容易失眠的阶段,所以应当好好调整心态。

  做产品需求的时候,你可能需要几个流程图,依赖图这些对功能的划分,多使用脑图软件来构思自己的产品,也尝试思考流程是否能简化,站在用户的角度下使用是否方便,哪些功能是主要的,哪些是次要的。

  如果觉得文字描绘不清晰的话,你也可以自己做几张原型图出来,注意这不是高保真图,只是让你自己弄明白这个产品的某一页或者某一块,不应当把心力花在细节上。

  总之在这个阶段,应该有大局感,而且也应当仔细打磨自己的想法,如此三番之后要给自己定下个初稿,因为你之后的时间很有可能会蹦出很多个想法,扰乱原有的安排,所以你需要在前期有个原则坚持住,以防心不定而一事无成。

  界面的设计

  Web项目的一个重要部分就是界面,它可能指的是浏览器前端,也可能指的是某个手机平台的UI,我们这个时候需要花些心力在设计方面,包括UI的设计和交互设计。

  由于大部分开发者很难有良好的设计感,如果有设计师朋友的话也可以请他们帮忙,否则的话可以多去一些设计网站(比如dribbble),多收集一些美观大方、符合自己要求的界面,从而形成对自己项目的认识。

  如果有能力做高保真界面的话,那么请一定要做,不要觉得做高保真界面的图片是浪费时间,不要因为你觉得写html/css更省事就直接开敲前端界面了,你在做图的时候所思考的和你敲界面代码所思考的其实并不是一回事,前者会让你更加着重设计感,而后者更偏向于实现。

  在这个期间里需要多观察观察别的网站/应用的界面,找出那些自己喜欢的,然后询问自己哪部分是自己喜欢的,如果放在自己的项目是否可行,能完整表达我们之前的需求元素么?

  很多人在做单独项目的时候,前期花在界面设计上的时间极少,都是脑子有一个大概,然后边写代码边脑补界面样子,写着写着就走了样,最后弄出来的界面是混杂的,看上去很乱。

  我以程序员的角色来分享几条界面设计的建议:

  1、如果自身不是专业设计,就不要采用复杂的界面,那么设计界面的时候请走扁平化,一个web页面/app 页面的颜色请尽量保持两到三个,并维持一个主色调,其他的使用同类色系。

  2、如果是手机app,那么请和平台推荐的设计方向保持一致,比方说如果是ios app,那么应当参照ios的原生应用来做设计,而如果是android app,那么请使用material design的规则,不要妄图利用相同的设计做不同平台的app,容易变乱。你使用原生的平台设计,就算设计感不强,也不会显得杂乱无章。

  3、Web界面的设计应该有自己的特点,我知道很多做单独web项目的人喜欢用开源的web前端框架,比如bootstrap、amaze UI这些,虽然节省心力,但是做出来的界面大同小异,容易疲劳,浏览器上的界面和手机app不一样,它屏幕更大,可以表现的也更丰富,如果实在要用开源web框架的话,也要尝试换换色系之类的。

  4、心态要好,大多数的时候自己设计的界面,是挺难看的,别因为这事挫败了做项目的积极性,也别想一口气做出来个美轮美奂的UI闪瞎大家的眼,毕竟不是职业的设计师,不要和自己怄气。

  界面实现

  在界面基本定稿的时候,这时候我们可以来正式实现界面了,我们之前技术选型的时候应该考虑到前端需要用到哪些技术,比如说做web界面的时候,是否需要做成one page application,是否需要使用前端库等等。

  web前端现在环境变化非常大,已经由原来的做页面转成应用化了,所以配套的工具也变得多、杂、繁了,选型的时候还是需要注意选自己熟悉的,生态圈好的,在这一点上,框架上有vue、react、angular比较知名,我个人比较喜欢vue,它上手还是蛮快的,如果想做应用式的web产品可以选用。

  android app的客户端如果你以前使用非android studio来编写的话,那么这个新项目就换用android studio吧,它已经足够好用了,在做界面开发的时候,推荐使用那些大热的开源组件,比如说fresco、rxjava、retrofit、gson这些,可以节省大量心力,组织代码的话使用MVP或者MVVM模式也能让新项目变得容易维护,推荐使用,之前我也写过一篇关于MVP应用的文章:Dagger2的应用——MVP+Retrofit+RxJava

  如果你写的是ios app的话,不要在语言上(OC或者swift)来犹豫,事实上这两门语言都能很好的完成一个app的构建,而且还可以混合编程,同样的,在开发app的时候请大胆使用开源库,比如masonry、reactivecocoa或rxswift,cocoa touch原本的MVC模式也很清晰明了。

  如果自己想实现多平台的Wweb应用,可能会使用react native这类工具来完成app开发,说实话比起原生语言开发app,它对web开发者来说更友好一些,如果有RN相关经验的可以尽情尝试。

  现在不管web开发还是app开发,都可以把前后端切断,让后端作为数据输出方,不过有时候我们的web项目可能需要对SEO友好,所以可能需要花心力在同构上面,也就是在前端和后端都维护相同的路由和相同的模板渲染,代价也是比较大的,当然也可以像传统开发那样完全由后端render view,具体情况自己考虑。

  后端的接入

  后端开发牵扯非常广,所以我们不太可能是把前端做完了再做后端,一般情况下,做前端和做后端是交叉并行的,这一点其实是在模拟团队合作的情况,只不过身兼多职。

  后端这边我依旧推荐选型的时候选择自己最熟悉的,如果熟悉某款框架的话,那么尽量用框架,后端开发的语言并没有什么限制,可以在下面几种语言里选择:

  传统语言:Java 、C# .Net

  传统脚本语言:php、python、ruby

  新兴语言:node.js、golang

  用来作死的:C/C++

  一般情况下,我推荐脚本语言来开发web应用的后端,前几年ruby on rails框架流行的时候,带来了非常快捷的开发方式,随后其他语言也都相继出现很方便的web框架,其中有大型框架,也有微框架,具体的抉择可以看一下我之前的文章:除夕乱谈web微框架,从koa说起

  一个重点是我们可能要考虑数据库的问题,需要对常见的数据库很熟悉,并且能够合理的抽象出schema,以及合理的建立索引,多表之间如何联合,这些都是和需求紧密相关的,只有深刻理解了自己的需求,才能做好这些事情。

  后端开发的时候建议使用ORM,如果框架自带ORM的话那就用框架自带的,如果不自带可以选用社区开源、生态圈丰富的ORM,需要注意有些ORM本身bug比较多,坑也多,只能多踩踩才知道。

  我们刚开始可能只是简单的增删查改,不过随着加入用户体系、身份验证、权限划分、内容过滤等等需求之后,就可能需要你合理的规划好控制器的代码,我建议大部分情况下做成一条条service,然后做串联调用。

  后端开发要注意网络安全,用户身份的存取,内容数据的插入,文件的上传这些容易出问题的地方都需要格外注意,不要因为自己做的小就图省事,弄个满是安全漏洞的网站,还不如不上线。

  缓存机制其实对于并发高的时候效果很明显,在设计后端的架构时候,也应当考虑到哪些部分可以用缓存代替,我们常用的memcached或者redis都是缓存利器,非常建议配合使用,不要在意你的网站是个小网站。

  有时候需要考虑定时任务或者异步任务队列,这个时候我们可以选一些好用的工具,比如说用redis、开源MQ或者是专门用来做任务的任务调度器之类的,我之前写过一篇关于任务队列和任务调度器的文章:浅谈任务队列和任务调度
后端开发注意主次,有的时候增加或者修改一个功能,其实牵扯到不只一块区域,所以尽量保证抽象层次要高一些,代码耦合也要低一些。

  有些页面是用来获取数据的,而有些是用来处理数据的,我们对这些部分要分开出来,也可以采用RESTful这种API 设计的架构,把功能抽象成资源,转而对资源进行增加或者修改。

  简单的总结

  一个人写一个web项目,是很累的,需要你有强大的热爱才能完成它,有些建议可以让你能够顺利的完成独立的web项目:

  1、三思而后行,不理智的项目乘早断了想法。

  2、不要上来就敲代码,做些提前工作,需求和设计。

  3、功能是一步一步来的,不要最开始就弄一大堆,容易打退堂鼓。

  4、用开源框架、库、工具能够节省你的心力,前提是你足够熟练。

  5、不要在写代码的时候就想着优化怎么做,说不定你想的优化其实很渣。

  6、定下来的需求如果要变更,请尽量小,如果要推翻重做需求,说明你最开始就不成熟。

  7、你要相信会有版本迭代,所以有新想法的时候别急,先记下来。

  8、保持爱来抵抗做项目的寂寞和焦躁,碰到坑的时候可以散散心。

  9、一个web项目别拖太久,时间越长越容易腰斩。

  10、心态好点,接收它99%会扑街的事实。

 

关注QQ公众号【黑客联盟】学习更多黑客技术!     

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SSM项目3.18 语言课学习系统的设计与实现.zip是一个使用Java语言开发的Web应用,它采用了SSM(Spring Spring MVC MyBatis)框架。该系统旨在为学生和教育机构提供一个全面的语言学习和管理平台,使得用户能够在网络环境下高效地进行语言课程学习和相关管理活动。 项目的主要功能可能包括: 1. **课程管理**:允许管理员添加、更新和删除语言课程信息,包括课程名称、描述、教师分配、上课时间等。 2. **学习内容**:学生可以访问不同的语言课程内容,包括视频、音频、文档和互动练习。 3. **进度跟踪**:系统自动记录学生的学习进度,包括已完成的课程、练习成绩和学习时间统计。 4. **考试与评估**:提供在线考试功能,支持多种题型,并自动生成考试成绩和反馈。 5. **作业提交**:学生可以在线提交作业,教师可以在线批改并提供反馈。 6. **讨论区**:设有讨论区供学生和教师交流学习经验和解答疑问。 7. **个人中心**:用户可以管理自己的个人信息、学习历史和成绩记录。 8. **通知系统**:实时发送课程更新、作业截止和考试安排等相关通知。 整个项目采用MVC设计模式,Spring负责整体业务逻辑的处理和依赖注入,Spring MVC用于处理HTTP请求和页面跳转,而MyBatis负责与数据库的交互操作。数据库设计优化了存储结构和查询效率,以适应语言课学习系统的需求。 这个项目适合计算机科学或软件工程专业的学生作为课程设计、毕业设计或实践项目。对于希望学习SSM框架以及教育技术(EdTech)系统设计的开发者来说,这是一个实用的案例。通过参与这个项目,开发者不仅能提升Java Web开发技能,还能了解如何将现代Web技术应用于语言教育领域,提高教育质量和学习体验。
SSM项目大学生党务学习平台小程序.zip是一个使用Java语言开发的Web应用,它采用了SSM(Spring Spring MVC MyBatis)框架,并结合了微信小程序前端技术。该系统旨在为大学生党员提供一个在线学习和交流的平台,使得用户能够在微信环境中方便地接受党务教育、参与党内活动和进行自我提升。 项目的主要功能可能包括: 1. **学习资料**:提供党的政策法规、理论知识等学习资料的在线阅读和下载。 2. **在线考试**:组织在线党务知识考试,支持自动批改和成绩记录。 3. **活动通知**:发布党内活动的通知和日程,提醒党员参加相关会议和培训。 4. **个人中心**:用户可以管理自己的个人信息、学习进度和考试成绩。 5. **互动讨论**:设有论坛或社区模块,供党员之间交流学习心得和工作经验。 6. **志愿服务**:记录党员参与志愿服务的情况,鼓励和表彰积极参与者。 7. **党费缴纳**:提供在线缴纳党费的功能,简化党费收缴流程。 8. **数据分析**:为党务工作者提供数据支持,包括学习情况、活动参与度等统计分析。 整个项目采用MVC设计模式,Spring负责整体业务逻辑的处理和依赖注入,Spring MVC用于处理HTTP请求和页面跳转,而MyBatis负责与数据库的交互操作。数据库设计优化了存储结构和查询效率,以适应党务学习平台的需求。 这个项目适合计算机科学或软件工程专业的学生作为课程设计、毕业设计或实践项目。对于希望学习SSM框架、微信小程序开发以及政务信息系统设计的开发者来说,这是一个实用的案例。通过参与这个项目,开发者不仅能提升Java Web开发技能,还能了解如何将现代Web技术应用于党务管理,提高党建工作的信息化水平和党员的学习积极性。
SSM项目乡村研学旅行平台(小程序.zip是一个使用Java语言开发的Web应用,它采用了SSM(Spring Spring MVC MyBatis)框架,并结合了微信小程序前端技术。该系统旨在为学校、家长及学生提供一个专注于乡村教育和体验式学习的研学旅行平台,使得用户能够在微信环境中轻松地查找、报名和参与研学活动。 项目的主要功能可能包括: 1. **研学路线推荐**:根据不同的教育主题和学习目标,推荐多样化的乡村研学路线。 2. **在线报名与支付**:提供在线报名功能,并整合微信支付,简化报名和缴费流程。 3. **互动教学**:在旅行过程中,教师可以通过小程序布置作业、发布通知,学生可以提交作业和分享体验。 4. **实地探索**:利用地图服务展示研学地点,增强学生的实地探索体验。 5. **文化传承**:介绍乡村的文化背景和传统习俗,让学生更好地了解和传承民族文化。 6. **安全监管**:提供实时位置跟踪和紧急联系功能,确保学生的安全。 7. **反馈与评价**:结束后收集学生和家长的反馈,用于改进未来的研学计划。 8. **社区交流**:建立社区论坛,让用户分享研学经历和教育资源。 整个项目采用MVC设计模式,Spring负责整体业务逻辑的处理和依赖注入,Spring MVC用于处理HTTP请求和页面跳转,而MyBatis负责与数据库的交互操作。数据库设计优化了存储结构和查询效率,以适应乡村研学旅行平台的需求。 这个项目适合计算机科学或软件工程专业的学生作为课程设计、毕业设计或实践项目。对于希望学习SSM框架、微信小程序开发以及教育旅游服务平台设计的开发者来说,这是一个实用的案例。通过参与这个项目,开发者不仅能提升Java Web开发技能,还能了解如何将现代Web技术应用于教育和旅游领域,提高学生的实践能力和文化素养。
好的,我可以使用中文回答您的问题。 如果您想使用 IntelliJ IDEA 来创建一个 Java Web 项目,您可以按照以下步骤: 1. 打开 IntelliJ IDEA,并在欢迎界面上选择 "Create New Project"。 2. 在弹出的窗口中,选择 "Java",然后在右侧选择 "Web Application"。接着点击 "Next"。 3. 给您的项目取一个名字,并选择保存路径。然后点击 "Next"。 4. 在 "Java EE Application Server" 中选择一个应用服务器。如果您没有安装应用服务器,可以点击 "Download" 来下载一个。 5. 选择 "Java Version",然后点击 "Next"。 6. 在 "Additional Libraries and Frameworks" 中,可以选择添加一些库和框架来辅助您的开发。如果您不需要,可以直接点击 "Next"。 7. 在 "Project Template" 中,选择 "Web Application",然后点击 "Finish"。 8. 现在您已经创建了一个 Java Web 项目。在左侧项目结构中,可以看到项目的目录结构。 9. 接下来,您可以开始编写您的 Java Web 应用程序了。在 "src" 目录下创建一个 Servlet 类,并实现其 doGet() 或 doPost() 方法来处理请求。 10. 在 "webapp" 目录下创建一个 HTML 页面,并在其中添加一个表单。在表单中,您可以使用 action 属性来指定表单提交的 Servlet。 11. 运行您的应用程序。在 IntelliJ IDEA 的工具栏中,点击 "Run",然后选择 "Run on Server"。在弹出的窗口中,选择您的应用服务器,并点击 "OK"。 12. 打开您的浏览器,访问 http://localhost:8080/your-web-app/,其中 "your-web-app" 是您的应用程序的名称。如果一切顺利,您应该能够看到您的应用程序。 希望这些步骤能够帮助您创建一个 Java Web 项目。如果您有任何问题,请随时询问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值