这篇文章是为了给自己这个外包得到的知识进行一次复盘和进行知识梳理。 [hplayer] [Music server="netease" id="538290027" type="song"/] [/hplayer] --- [collapse status="false" title="外包工资"] 本次外包金额:23k,历时15天,尾款还要等一两天,定金12.5k。 下面是定金收款截图:  总体来说难度不大,且简单。 尾款明天打完就好了。 ps:**外包薪资浮动很大,但我一直随缘接单就只接简单或者工资高的** 看自己技术难度获取金额大小 [/collapse] --- [collapse status="false" title="接外包注意事项"] 1. 必须要收定金,我的定金在50-60%之间收取中 2. 立好需求文档,估好价,挨打要立正,倘若客户随意更改需求文档内容可以不做,或者跑路(我经常别人改需求文档,我就叫涨价或跑路) 3. 不要心客户说的什么入股和利润分你之类的,**钱不到手都是放屁** 4. 给客户报价格把握好尺度,不能太少,而且报价的时候建议加上点预估上限。 5. **要会忽悠** 6. 记住:**你只是来接外包赚外快的!** [/collapse] --- [collapse status="false" title="如何获取外包"] 1. 多加自己要接外包的技术方面的QQ和微信交流群(这种成功率最高) 2. 看见群里面有人发布需求就加好友,哪怕没有接到也不要删好友,一直存着,有可能会再来找你,或者别人介绍单子 3. 写一些博客,和项目加上自己接外包的注释 4. 多逛qq群 5. 不建议在八戒威客之类的接。 6. 我一直随缘接单,毕竟在上学,能接就接,学习和身体最重要 ps:**接外包可以赚点小钱,但不要一直接外包当做外包的技术工种,没必要,把这份精力用来钻研以后进好一点的公司更爽,无论是钱还是什么** [/collapse] --- ## 本次项目涉及到的知识点 [collapse status="false" title="知识点"] [goal title="小目标"] [item check="true"] JWT[/item] [item check="true"] redis和mysql [/item] [item check="true"] 协程池和定时任务[/item] [item check="true"] 爬虫[/item] [item check="true"] 加密:aes加密[/item] [item check="true"]那位大人 [/item] [item check="true"]前端路由和基础框架使用[/item] [/goal] [/collapse] --- ## 前端获取的知识点 ### 前端使用axios后即使后端设置了写入cookie和读取cookie依旧无法正常写入浏览器,解决方法。 ``` withCredentials: true // 需要axios设置拦截器或者默认为允许跨域。 ``` ### 如何使用vue的router定义一个路由 这里使用的是 'vue-router' 需要指定vue-router的版本。 代码内容: ``` // 路由设置文件 import {createRouter, createWebHashHistory} from 'vue-router' import menudata from "@/view/menudata"; import Wallets from '@/view/Wallets' import Withdraw from "@/view/Withdraw"; import order from "@/view/order"; import apikey from "@/view/apikey"; import auto from "@/view/auto"; import create from "@/view/create"; import WithdrawWallet from "@/view/WithdrawWallet"; const routes = [{ name: 'index', path: '/', component: menudata }, { name: 'Wallets', path: '/Wallets', component: Wallets }, { name: "Withdraw", path: "/Withdraw", component: Withdraw }, { name: "order", path: "/order", component: order }, { name: "apikey", path: "/apikey", component: apikey }, { name: "auto",// 授权地址 path: "/auto", component: auto }, { name: "create", path: "/create", component: create }, { name: "WithdrawWallet", path: "/WithdrawWallet", component: WithdrawWallet } ]; const router = createRouter({ history: createWebHashHistory(), routes // (缩写) 相当于 routes: routes }) export default router ``` 使用export default router 将router进行导出 ``` { name: "order", path: "/order", component: order } ``` name是路由的名字,path是路由指定的url,component是指定的路由展示组件。 可以于element-plus的菜单配置使用,获取路由展示。 当点击使用路由后可以使用vue的路由界面来展示界面: ``` ``` ### Go返回的unix时间戳js无法转为日期,js将时间戳转为日期 js函数: ``` export async function getLocalTime(nS) { let date = new Date(nS * 1000); let Y = date.getFullYear() + '-'; let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; let D = date.getDate() + ' '; let h = date.getHours() + ':'; let m = date.getMinutes() + ':'; let s = date.getSeconds(); let time = Y + M + D + h + m + s return time } ``` [scode type="green"]Go返回的默认时间戳与js的标准不一样,比列是1:1000[/scode] ### vue绑定jwt到本地浏览器 ``` localStorage.jwt = "Bearer " + res.msg // 本地储存jwt ``` 只建议储存本地数据 --- ## 后端遇见的问题(Go) ### gin使用路由定义 ``` // 启动分组 public := engine.Group("/api/public") private := engine.Group("/api/private") major := engine.Group("/api/major") // 设置对外公开,有密钥就行的函数 apikey := engine.Group("/api/apikey") // 分组路由使用的中间件 apikey.Use(net.Apikey()) public.Use(net.AuthMiddlewareJWT()) major.Use(net.AuthMiddlewareJWT()) major.Use(net.FuncGinCaptcha()) // 将路由进行绑定 dao.RouterPublic(public) dao.RouterPrivate(private) dao.RouterMajor(major) dao.RouterAPIkey(apikey) ``` ``` engine := gin.Default() ``` 使用Group使用gin的路由分组设置,然后使用use进行中间件绑定。 Loading... 这篇文章是为了给自己这个外包得到的知识进行一次复盘和进行知识梳理。 <div class='handsome_aplayer player-content' data-preload="auto" data-autoplay="false" data-listMaxHeight="340px" data-order="list"> <div class="handsomePlayer-tip-loading"><span></span> <span></span> <span></span> <span></span><span></span></div><div class="handsome_aplayer_music" data-id="538290027" data-server="netease" data-type="song" data-auth="d2f8185f6d7729abacfd8fdeb14b906b"></div> </div> --- <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-51dd91f82a7243a67c099996d1b99a5f80" aria-expanded="true"><div class="accordion-toggle"><span style="">外包工资</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-51dd91f82a7243a67c099996d1b99a5f80" class="collapse collapse-content"><p></p> 本次外包金额:23k,历时15天,尾款还要等一两天,定金12.5k。 下面是定金收款截图:  总体来说难度不大,且简单。 尾款明天打完就好了。 ps:**外包薪资浮动很大,但我一直随缘接单就只接简单或者工资高的** 看自己技术难度获取金额大小 <p></p></div></div></div> --- <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-16394f54702e97d7c4b724e449a16dbe50" aria-expanded="true"><div class="accordion-toggle"><span style="">接外包注意事项</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-16394f54702e97d7c4b724e449a16dbe50" class="collapse collapse-content"><p></p> 1. 必须要收定金,我的定金在50-60%之间收取中 2. 立好需求文档,估好价,挨打要立正,倘若客户随意更改需求文档内容可以不做,或者跑路(我经常别人改需求文档,我就叫涨价或跑路) 3. 不要心客户说的什么入股和利润分你之类的,**钱不到手都是放屁** 4. 给客户报价格把握好尺度,不能太少,而且报价的时候建议加上点预估上限。 5. **要会忽悠** 6. 记住:**你只是来接外包赚外快的!** <p></p></div></div></div> --- <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-42c637d31f843a992296d9d638a1453b73" aria-expanded="true"><div class="accordion-toggle"><span style="">如何获取外包</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-42c637d31f843a992296d9d638a1453b73" class="collapse collapse-content"><p></p> 1. 多加自己要接外包的技术方面的QQ和微信交流群(这种成功率最高) 2. 看见群里面有人发布需求就加好友,哪怕没有接到也不要删好友,一直存着,有可能会再来找你,或者别人介绍单子 3. 写一些博客,和项目加上自己接外包的注释 4. 多逛qq群 5. 不建议在八戒威客之类的接。 6. 我一直随缘接单,毕竟在上学,能接就接,学习和身体最重要 ps:**接外包可以赚点小钱,但不要一直接外包当做外包的技术工种,没必要,把这份精力用来钻研以后进好一点的公司更爽,无论是钱还是什么** <p></p></div></div></div> --- ## 本次项目涉及到的知识点 <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-c2ed37906cee479aeda6b1daa901f39518" aria-expanded="true"><div class="accordion-toggle"><span style="">知识点</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-c2ed37906cee479aeda6b1daa901f39518" class="collapse collapse-content"><p></p> <div class="panel panel-default box-shadow-wrap-lg goal-panel"> <div class="panel-heading"> 小目标 </div> <div class="list-group"> <div class="list-group-item"><div class="checkbox"> <label class="i-checks"> <input type="checkbox" checked="" disabled="" value=""> <i></i> JWT </label> </div><div class="checkbox"> <label class="i-checks"> <input type="checkbox" checked="" disabled="" value=""> <i></i> redis和mysql </label> </div><div class="checkbox"> <label class="i-checks"> <input type="checkbox" checked="" disabled="" value=""> <i></i> 协程池和定时任务 </label> </div><div class="checkbox"> <label class="i-checks"> <input type="checkbox" checked="" disabled="" value=""> <i></i> 爬虫 </label> </div><div class="checkbox"> <label class="i-checks"> <input type="checkbox" checked="" disabled="" value=""> <i></i> 加密:aes加密 </label> </div><div class="checkbox"> <label class="i-checks"> <input type="checkbox" checked="" disabled="" value=""> <i></i> 那位大人 </label> </div><div class="checkbox"> <label class="i-checks"> <input type="checkbox" checked="" disabled="" value=""> <i></i> 前端路由和基础框架使用 </label> </div></div></div></div> <p></p></div></div></div> --- ## 前端获取的知识点 ### 前端使用axios后即使后端设置了写入cookie和读取cookie依旧无法正常写入浏览器,解决方法。 ``` withCredentials: true // 需要axios设置拦截器或者默认为允许跨域。 ``` ### 如何使用vue的router定义一个路由 这里使用的是 'vue-router' 需要指定vue-router的版本。 代码内容: ``` // 路由设置文件 import {createRouter, createWebHashHistory} from 'vue-router' import menudata from "@/view/menudata"; import Wallets from '@/view/Wallets' import Withdraw from "@/view/Withdraw"; import order from "@/view/order"; import apikey from "@/view/apikey"; import auto from "@/view/auto"; import create from "@/view/create"; import WithdrawWallet from "@/view/WithdrawWallet"; const routes = [{ name: 'index', path: '/', component: menudata }, { name: 'Wallets', path: '/Wallets', component: Wallets }, { name: "Withdraw", path: "/Withdraw", component: Withdraw }, { name: "order", path: "/order", component: order }, { name: "apikey", path: "/apikey", component: apikey }, { name: "auto",// 授权地址 path: "/auto", component: auto }, { name: "create", path: "/create", component: create }, { name: "WithdrawWallet", path: "/WithdrawWallet", component: WithdrawWallet } ]; const router = createRouter({ history: createWebHashHistory(), routes // (缩写) 相当于 routes: routes }) export default router ``` 使用export default router 将router进行导出 ``` { name: "order", path: "/order", component: order } ``` name是路由的名字,path是路由指定的url,component是指定的路由展示组件。 可以于element-plus的菜单配置使用,获取路由展示。 当点击使用路由后可以使用vue的路由界面来展示界面: ``` <el-main> <!-- main主视图 <menudata></menudata> --> <router-view></router-view> </el-main> ``` ### Go返回的unix时间戳js无法转为日期,js将时间戳转为日期 js函数: ``` export async function getLocalTime(nS) { let date = new Date(nS * 1000); let Y = date.getFullYear() + '-'; let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; let D = date.getDate() + ' '; let h = date.getHours() + ':'; let m = date.getMinutes() + ':'; let s = date.getSeconds(); let time = Y + M + D + h + m + s return time } ``` <div class="tip inlineBlock success"> Go返回的默认时间戳与js的标准不一样,比列是1:1000 </div> ### vue绑定jwt到本地浏览器 ``` localStorage.jwt = "Bearer " + res.msg // 本地储存jwt ``` 只建议储存本地数据 --- ## 后端遇见的问题(Go) ### gin使用路由定义 ``` // 启动分组 public := engine.Group("/api/public") private := engine.Group("/api/private") major := engine.Group("/api/major") // 设置对外公开,有密钥就行的函数 apikey := engine.Group("/api/apikey") // 分组路由使用的中间件 apikey.Use(net.Apikey()) public.Use(net.AuthMiddlewareJWT()) major.Use(net.AuthMiddlewareJWT()) major.Use(net.FuncGinCaptcha()) // 将路由进行绑定 dao.RouterPublic(public) dao.RouterPrivate(private) dao.RouterMajor(major) dao.RouterAPIkey(apikey) ``` ``` engine := gin.Default() ``` 使用Group使用gin的路由分组设置,然后使用use进行中间件绑定。 最后修改:2021 年 12 月 23 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果觉得我的文章对你有用,请随意赞赏