前端菜鸟如何快速开发个人产品

news2024/11/15 15:38:11

我是车辙,我的掘金小册《SkyWalking:应用监控和链路跟踪》已经上线啦,这是我的第一本电子书,欢迎大家订阅。

大家好,我是车辙。在完成小册后的一段时间,我突然想开发一款个人H5产品。在起初有这样想法的时候,内心其实还是有不少纠结的。

大家都知道,虽然我是计算机专业,但我从毕业到现在工作4年时间,基本上所有的工作都是和后端有关。唯一和前端沾边的学习技能还是在大学时期学的,那时候因为毕业设计是爬虫网站,主要用于小说的爬取和阅读。所以它的大部分内容还是以后端为主,前端界面非常简单,用了Bootstrap 布局和JavaScript

如果要做一款H5产品,除了需要学习新的框架,像Vue或者React, 还得去学习Css 以及各种布局,也许后面还得对其进行机型适配,想想就头大。

当初放弃前端的原因还是觉得 Css 太复杂了,天底下怎么会有这么难的技术。数据结构和算法和它比都算简单的。

后来请教了前端的朋友和同事,他们告诉我要做一款个人的产品是有速成的办法的,可以通过CodeFun快速生成前端代码。至于后端和上线部署对我来说还是没有什么难度的。磕磕绊绊之下,我的产品在两周前终于搞定了,完结撒花。

文末有链接,大家可以去体验下

接下来,我会基于我的学习、踩坑经历,给那些后端精通、前端小白的程序员们提供一个产品快速开发方案。

画设计稿

正经的互联网公司,在项目立项后。产品首先需要出一份原型,然后交由 UI 出一份设计稿,接着前端负责实现。对于我们个人开发者而言,原型可以不用出,设计稿还是需要的。况且,多画图对我们程序员还是很有帮助的,不管是时序图还是流程图,还是设计稿,都能锻炼我们的思维能力

我使用的设计工具是Figma,国外的一款设计平台。相比于 Axure,我更看重它的在线设计协作能力。如果对Figma不熟悉的同学,可以参考B站的视频教程快速学习,小破站牛逼!B站地址

你可以快速把这个B站视频看完,然后再用个半天,差不多就能靠 Figma 画出个设计稿了。如果需要Logo图标,可以去阿里妈妈的图标网站iconfont下载。地址

下面的就是我的产品设计稿了。
image.png

前端代码生成

画完设计稿,之前我们提到过,可以通过CodeFun 这个平台快速生成前端代码,它的官网简介说是 UI 设计稿自动生成源代码。CodeFun 可以说和Figma 进行了深度绑定,它在Figma中开发了一款插件,可以把Figma的产品设计稿上传到CodeFun 中。把我这边的设计稿上传后,可以看到在 CodeFun 中成功生成了页面。

image.png

随便点击一张设计稿,它就能帮我们生成对应平台的程序代码,包括Uniapp、Vue、微信小程序等。
image.png

但是接下来的选择就犯了难,该选择哪个平台?因为我的平台定位是微信H5,但不排除之后可能会复制到小程序。网上搜索后,网友推荐了UniApp作为开发平台,它能把 UniApp 的原生代码转换成微信小程序、H5,甚至 App 的代码,并且官网的文档足够丰富,至少对于我来说足够了。

H5 开发

对于 Uniapp 的学习,B站上视频一堆,只不过内容都很多,就算开着2倍速,也无法在短时间内学会,看完说不定还会忘。所以我们可以参考网上某马的入门教程,了解 Uniapp 的基本使用,不需要多,了解下基本配置和 Tabbar 的生成即可。

具体地址就不发了,可能会有给某马打广告的嫌疑

配置完成后,通过微信小程序开发工具,能有这个样子就差不多。

image.png

样式开发

接着把 CodeFun 生成的代码文件复制到Uniapp,你以为这很简单的吗?其实这才是痛苦的开始。为什么这么说?

  1. CodeFun 生成的静态代码完全只能看,比如说它生成的文本框只是一个Div + Css。你需要把它替换成对应的组件。因为我们是Uniapp 开发的,所以我建议去它的官网找对应的组件会比较快,而且兼容性也会更强。另外像一些相对复杂的组件,ScollDateTimeswiper-item 都需要我们去替换掉。
  2. 它生成的 Css 既多还复杂,重重嵌套,有时候一个简单的 View 会有4、5个样式。还有一些布局,比如flex布局,主轴和副轴是什么,对于前端小白的我,每次碰到不会的,都得去网上看下什么意思。为了防止忘记,我都会把它记下来,睡前再回顾一遍
  3. 有些Uniapp的组件和 CodeFun生成的代码会存在一定冲突。比如说居中、字体等,这时候就得手动去调整样式。如果调不通,需要去修改组件源码。这对我来说可太难了,记得一开始改个左右居中对齐就花了我3个小时,差点就把我的耐心给熬没了。
  4. CodeFun 生成的css因为不通语境,命名方式都是类似于:Section1、Section2、Group1、Group2 维护起来特别的麻烦。

所以说,自动生成代码其实也是存在不少弊端,只不过作为刚入门的新手,能帮助我们快速开发,优势还是大于劣势的。

事件开发

到这一步,产品其实已经初具雏形。我们要做的是给他添加各种事件以及和后端的交互。基本上这一步主要的难点在于 Vuex 和同步异步的使用,像 v-model、v-for、v-if 这种学习起来还是比较简单的。

其实我一开始主要就是用 LocalStorage 存储信息,觉得没有Vuex不也能开发嘛,不过随着页面间的交互多起来,问题就暴露了:我在A页面的修改了用户信息后,到B页面数据并没有随之变化。只好乖乖的去学Vuex。所以这里我建议,如果你的项目页面较少,就用LocaStorage就完事了,如果页面较多且有交互,就用Vuex + localStorage

剩下的还有同步异步问题就靠Promise去解决,这个东西一开始我特别理解不了,比如使用await关键字的使用场景。感觉后端的异步比前端还是要简单点。

额外问题

在开发过程中,还存在些额外的问题。

  1. 比如微信授权问题,因为我是需要微信登录的,但是在Hash模式下因为#号导致了微信回调地址出错,所以我最后还是改成了History模式。至于这个引出的问题,我们在部署环节再讲。
  2. 一开始我以为微信授权需要真实的测试环境地址,打算通过内网穿透测试。后面才发现你可以修改本地Host 创造个假的域名用于本地测试。

部署到服务器

在本地开发完成后,我们需要部署到测试环境中。Uniapp 提供了一键构建打包的功能,直接使用就可以了。
而服务器我建议购买腾讯云的,相比于阿里云更加便宜点,【吐槽下阿里云太贵了】。

然后腾讯云和宝塔是有合作的,用宝塔操作服务器、安装软件、维护软件什么的,确实比自己手动敲代码更简单。安装以下几个软件:

  1. JDK11
  2. MySQL
  3. Nginx

注意开通对应的防火墙端口,比如MySQL就需要开通3306端口,Redis 需要开通 6379端口

这边的几个问题有:

  1. 跨域问题:跨域主要就是因为域名、端口、协议不一致导致的。以前还没考虑过为什么前端本地调试的时候没有跨域问题,原来是前端做了代理,帮助我们和后端进行了交互。但是在测试环境上就是些Html和js代码,所以我们可以通过Nginx帮助我们做这个代理。。
  2. history 问题,因为history模式去除了#,在刷新页面的时候会默认请求后端,但是后端没有这个接口,就导致了404。所以我们需要在Nginx 通过try_files进行配置,先去前端页面找,找不到再去请求后端服务器。

image.png

后端的部署,我推荐使用云效【我觉得是我目前为止体验最好的产品了】。全部部署完成后,产品就正式上线了。

OK,到这差不多就结束了。其实还有很多问题存在,比如说微信支付的JS-SDK,组件封装等等,不过篇幅有限,就到此为止吧。最后奉上体验地址,希望大家前往试用。前端小白的作品。

总结

通过这次实打实的体验前端同学的工作,我也算是进入了前端的大门,为自己的职业生涯添上了浓墨重彩的一笔。同时也为其他想进入前端这个领域的同学提供些参考。最后补充一句,我以前觉得前端简单的想法真是大错特错,前端的难度一点都不比后端低。像这次机型适配,我压根就没完成。。。

最后希望大家多多点赞、收藏。就和收藏电子书一样,点赞、收藏了,也就代表学会了,不要问我怎么了解的这么清楚。

img

我是车辙,掘金小册《SkyWalking》作者,一名常被HR调侃为XX杨洋的互联网打工人,。

有需要源码的同学可以管住《车辙的编程学习圈》领取,说不定什么时候这个产品也开源了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/140838.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

长、中、短视频“再战”微短剧

配图来自Canva可画 近年来,流量焦虑一直伴随着国内的视频平台,比如,制作精良的长视频由于剧集冗长正在被“追求效率”的年轻人抛弃;高歌猛进的短视频也因为无法承受太多有价值的内容而面临增长瓶颈。在此背景下,制作门…

中国工业以太网交换机市场分析

一、我国以太网交换机市场: 工业以太网交换机(IndustrialEthernetSwitches)是能够满足工业现场需要,技术层面与商业以太网交换机适配,而实时通信、可靠性、稳定性、安全性、环境适应性等各个方面规定高于商业以太网交…

玩转X3派,健身游戏两不误

一、准备工作 Windows电脑端安装拳皇游戏 (因为是按键模拟,理论上只要是按键控制的游戏都可以玩,本文用MAME模拟器作例子,下载MAME:MAMEdev.org | Home of The MAME Project) Windows可直接从该目录下载&…

常用的PHP伪协议大全

目录 常见文件包含函数 常见协议 php:// php://filter(本地磁盘文件进行读取) php://input (读取POST数据) file:// data:// 常见文件包含函数 函数功能include()代码执行到 include() 函数时将文件包含include_once()当…

如何操作工单系统

如何自定义工单字段 点击【工单管理】 > 点击【工单自定义字段】。选择【添加新的自定义字段】,即可进行字段编辑。管理人员可以在此页面自行添加要在工单上显示的内容,更改工单的格式,使其更满足于自身实际操作需要。管理员可选择添加单…

从“少林寺”毕业后,我当上了开源社区“区长”

本期名人堂我们有幸邀请到了Alluxio创始成员兼开源社区副总裁范斌先生。范斌先生讲述了自己的求学、工作、加入开源社区的经历,以及对未来十年数据编排发展的展望,和对开发贡献者的一些建议。 问题 1:范斌老师您好,很荣幸有机会采…

归并排序与逆序对数量模板题

归并排序 归并排序模板题 给定你一个长度为 n 的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n。 第二行包含 n 个整数(所有整数均在 1∼109 范围内&#xff…

DCG开年大戏上演“拖字诀”,爆雷恐迎加密至暗时刻

文/章鱼哥出品/陀螺财经币圈无新事,新年伊始,DCG被Gemini催债引发爆雷传言的事情一如FTX、SBF爆雷当初 ,DCG是否会步他们的后尘,目前还不得而知,但这开年一记重锤,给2023的加密领域开了个坏头。祸起Gemini …

【王道·计算机网络】第一章 计算机网络基本体系【未完】

1. 计算机网络概述 1. 概念 计算机网络是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。简而言之,计算机网络就是一些互联的(通过通信链路互联互通)、自治的计算机系…

【4.1】Ribbon负载均衡原理

【4.1】Ribbon负载均衡1 Ribbon--负载均衡原理1.1 负载均衡流程1.2 源码分析(debug)2 总结1 Ribbon–负载均衡原理 1.1 负载均衡流程 图中的地址是真实可用的地址吗? 显然不是。 这样一个请求实际上是无法直接到达user-service的。 因此中间…

求一款免费好用的进销存管理软件?

求一款免费好用的进销存管理软件? 免费好用的进销存管理软件,“免费”一词对用户最具吸引力。 很多的小微企业在企业发展的过程都会选择免费的进销存管理软件来协助自己运营。都会希望,花最低的成本,实现最大的利益。 进销存管…

牛客网数据库sql实战剖析(一)

牛客网SQL实战 1.查找最晚入职员工的所有信息 思路:找出入职时间最大的时间,作为子查询条件进一步查找到该员工的其它信息。 SELECT * FROM employees WHERE hire_date (SELECT MAX(hire_date)FROM employees );这里不能用order by的方式&#xff0c…

私募证券基金动态-12月报

成交量:2022全年日均9,277.25亿元12月A股两市日均成交7,875.28亿元,环比下降15.15%、同比下降26.83%,是2022年继9月以后成交量次低的月份。2022年全年,日均成交量9,277.25亿元。管理人:新提交备案29家,备案…

【北京理工大学-Python 数据分析-1.2-NumPy数据存储与函数】

一、数据CSV文件的存取 CSV文件(Comma-Separated Value,逗号分隔值)是一种常见的文件格式,用来存储批量数据。 如常见的数据存储为CSV后 NumPy中有两个函数可以写入CSV格式,并从CSV文件中读取数据。 CSV文件的存储 np.savetxt…

mysql中的rand()函数简介以及和其他函数组合使用实践

一、本文结构简介 本文首先介绍rand()的基本使用 其次分别介绍round与rand的合用、ceiling与rand的合用、floor与rand的合用、md5与rand的合用 二、rand()的基本使用 rand()是系统自带的获取随机数的函数 (1)无参数:产生获取[0,1)之间的float型的数字 (2)有参数&a…

【jQuery】写一个电梯导航

今天大概是跟着pink老师学习JS的第八天&#xff0c;看了有410章了。 视频教程&#xff1a;pink JS 今天早上跟着老师做了一个电梯导航&#xff1a; 还是那个熟悉的品优购项目。。。 之后我打算自己练习一下&#xff0c;然后就出现bug了。 <div class"tuijian"&…

CO13 订单取消确认报错:“在为订单XXXX 确定实际成本中出错”处理分析

用户再操作CO13时报了一个错误&#xff1a;在为订单XXXX 确定实际成本中出错。 看到这个错误以为是财务同时没有发布成本导致的。然后我也操作了一下发现了一些过账中的错误。 原来是冲销这个工单的账期是在前几个月&#xff0c;而那个月已经关账期了&#xff0c;所以报错。 …

ORB-SLAM3代码和算法学习—浅谈代码中的纯定位模式

0总述 在Tracking线程中&#xff0c;当系统初始化完成后就会正式进入跟踪环节。在ORB-SLAM3算法代码中提供了两种模式&#xff0c;一种是纯定位模式&#xff0c;一种是定位建图的SLAM模式。 对于纯定位模式&#xff0c;在源码中由成员变量mbOnlyTracking控制&#xff0c;这个…

django 利用Form上传文件到 media 文件夹

背景&#xff1a;利用 Form 收集用户提交的信息&#xff0c;包括字符串和文件对象&#xff0c;文件保存在项目的 media 文件夹&#xff0c;因为 static 文件一般是用来存静态文件 css 或者项目所需要的图片&#xff0c;用户上传的文件应该保存在其他文件夹; 1、 启用 media&am…

实战演练 | 使用 SQL 别名简化查询并自定义结果

别名能够在不影响基础表或视图的情况下临时重命名表或列。作为大多数甚至所有关系数据库管理系统都支持的 SQL 功能&#xff0c;别名是简化查询和/或自定义结果集中列标题的好方法。在这篇文章中&#xff0c;我们将使用 Navicat Premium 16 来完成这两项工作。重命名列许多数据…