在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
从啥也不会,到写前端 -> 发布小程序 -> 调用后端接口 -> 写后端 -> 数据库 -> 腾讯云服务搭建 -> 未完待续 一、已有的基础 19年3月写过小程序《英语四六级算分器》,就一个页面,百度**册微信小程序,然后百度下前端的按钮啊,布局啊啥的,就上线了第一版。图1和图2(计算器页面),非常简单好入门 上线后日最高访问量几百,特别是考四六级那几天....平时用的人倒是很少。已经到了可以放广告的权限,但是为了用户体验,也没放,毕竟没投钱买服务器也不想闹大家眼睛。今年疫情期间就想优化,于是就有了图3这个页面。可是问题来了,听力资源从哪来呢?一开始从网上找听力,截请求,获取音频地址,然后在小程序中引用,后面发现,不太现实:第一是利用人家资源总归是有风险的,第二是压根没有特别全的音频,有的还是错的。。 解决:为了解决这个问题,于是我开了个公众号(虽然并没有用户gg..)从某鱼上几块钱买了完整的音频和试题原文文档,然后整理了几天,变成文章+音频,这样就相当于就把资源传到微信的服务器上了。将自己写的微信公众号文章用浏览器打开、截请求、放小程序,,于是就有了现在的图三(听力页面)这个页面 二、进阶优化 1、ajax入门学习:今年又想在小程序上加个翻译,于是就想这该怎么加呢?了解了下才发现,原来人家百度、谷歌、有道啥的都会给提供免费接口,也就是人家有服务器,对外开放功能,你调用就完了。那么问题又来了,我只会按钮啥的简单的前端,调用要怎么搞?为了能在小程序上调用,首先要学会简单的网页调用:即ajax,然后就看别人的代码,编写了百度翻译的功能(就几个文件,无需大的工程),具体详见:https://blog.csdn.net/gao_xiao_qi/article/details/104606805 写完了直接理解ajax请求了,其实也没想象的那么复杂:直接请求url,返回成功就会到success方法里,简单描述就是这样,不要想那么高深,用用就知道! 2、后面发现,只能简单的词句翻译,拓展知识要企业申请才能用,然后就不想放小程序了,就暂时不优化好了。但是学了ajax,就想做个二手平台发布下,但是我只会一点点前端基础,做二手发布还要学习后端 三、django后端搭建 1、创建工程:java啥的,工程比较大,而且各种类和调用不好入手,就拿python开刀,比较流行的就是django了,按照教程搭建,当然也遇到各种坑,比如第三方插件安不上、修改了配置无法回退又重新建N次工程、建立了mysql模型没搞懂又放弃、有的不支持又中途换python版本... 2、接口建成:diango搭建好了之后,要写后端接口了,接口直接用在url.py中对外开放,调用其他的views.py实现,最后终于实现了自己的第一个接口,访问url就可以打印后端返回的json数据。期间也是各种坑:返回乱码、数据格式不对、url正则问题无法匹配... 3、数据库:直接给数据也不行啊,总要动态从数据库读取,于是本地搭建mysql,期间有次mysql找回密码各种找不回,网上的教程总是有sql错误,就这问题还搞了一个下午...最后还是求助公司后端开发给解决了。后面就省心了,无非就是:建数据库、建表、设计字段,主键varchar int str啥的走起来。 4、读取数据库:django开发代码动态读取数据库,读完了接口返回,于是后端基本的功能就有了: 四、前后端联调 1、跨域:前端访问后端,有跨域问题,以前只停留在概念,现在终于知道啥是跨域了,请教了公司的前端工程师,发现也无计可施,网上说的各种配置url的get请求参数也不行。然后就从后端入手(前后端分离搭建也是很有好处的,起码前端不通走后端hhh),后端允许跨域,前端才又不报错 五、一步步搭建微信小程序二手商城 1、前后端、数据库都有了,剩下就是细节堆代码了,一个功能一个功能的实现吧。数据库要涉及:用户、商品,建数据库后面发现要更改,要用alter 2、列表页:画前端页面,把后端数据搞过来,涉及的知识:不同的地方获取不通资源,如:头像获取head资源,商品描述获取mysql资源等、获取图片(根据用户id和上商品id拼接url访问服务器资源)、ajax的get和post请求、箭头函数success:res=>(为了避免this获取不到)、图片位加载不够(比如有些用户只上传了一张图片,这样显示就只有1张)、又是跨域问题(小程序架构不允许,是真的严格,期间朋到奇葩的问题,就是在公司就能前后端通,在家的网就报请求不允许,应该还是ip的原因。后面看网上说勾选不校验就好了,设置后果然好了,设置如图) 但这只能治标不治本,上线还是不允许的,只能本地调调。 3、个人页:页面其实很简单,检测是否登录、没登录时点击登录就加载登录信息更新头像和昵称。但是,问题来了,不同用户登录时,要怎么区分? 学了半天才搞懂:原来人家微信是有一个openid来唯一标识每个用户的,但是这个openid不会轻易给你:先申请secret,然后人家腾讯会记录你的secret还有appid(appid在申请小程序的时候就有的),要把这个secret、appid、本次登录的code,这三个拼接成人家腾讯规范的url,然后请求接口,人家才会返回回来唯一的用户openid,有了这个opid就好办了,存到数据库里用来唯一标识当前用户 4、买服务器:微信小程序是有体验员的,就是发布开发版,可以让体验员看到,也为了方便测试,就得发布开发版,但是发现连真机调试都不同(不用想也知道是因为手机连外网,访问不了本地服务器资源)请求的资源都是获取不到的。无奈,买了个百度的域名,然后各种配置nginx,以为这样就可以大功告成。搞了半天才发现,还差得远,因为人家外网怎么找到你本机ip啊?,人家nginx只能本地反向代理你本地上下文部署不同服务器,所以要让互联网找到你得的服务器还得来个公网ip,但是自己电脑也不现实:占用内存不说,可能还要面临在公司外网穿内网的问题,这是万万不可的。没招,买服务器吧。。 选了半天买了腾讯云,一开始无知差点买了windows版的,想着跟我本地电脑一致还能方便部署,还好及时刹车买了ubuntu的(比centos要好入手一些的),接下来就是各种装(很多其实不用装的,ubuntu自带mysql和python,反正版本不对就自己重装),于是终于能启动了: 期间想用navicat远程连接腾讯云上的mysql,然后就可以本地继续操作了,网上说要改服务器上mysql下的配置,然后就各种改,啥方法都试了就是没权限,各种chmod attr都不管用,我逐渐意识到,,可能人家服务器或者ubuntu默认装的就是改不了的,于是暂时放弃,命令行建表导数据 5、发布页:涉及到知识点:表单提交、用户信息传值、数据库插入 未完待续。。
6、还要做的事:域名要实名,实名完了在微信公众平台进行认证,这是个过程,而且实名认证各种材料网上说要一个月审核,要开始做起来了 六、心得: 1、罗马不是一日建成的,一下子做个大功能对于小白来说不太现实也容易中途放弃,所以先做个简单的,上线或者用起来,有了信心,后面再加想法不迟 2、疑难问题每天都有,解决不了等一等再说,也许第二天就突发灵感,有新的方法就能解决了呢 3、优化方向:python直接操作数据库是各种不方便不好维护,逐渐意识到django的“模型”是个出路,后面要优化 4、java的增删改查应该也不是很难,应该部署springboot就足够了,后面改造再优化吧 5、这种入门级别在专业程序员面前就是小儿科,但是对于一个小白来说,从无到有的过程是很值得纪念的,hhhh
|
请发表评论