許久不寫代碼瓜浸,發(fā)現(xiàn)很多基礎(chǔ)都已經(jīng)忘得差不多了,感覺復(fù)習(xí)一下比原。寫不出文檔插佛,就先把技術(shù)給練一下吧。由于我沒有系統(tǒng)地學(xué)習(xí)過php量窘,所以很多都是網(wǎng)上找的零碎的知識雇寇,可能會有錯(cuò),還望指正蚌铜!
-
fastadmin采用的是MVC模式锨侯,所以要寫控制器。而我沒有搞清楚路徑中的含義冬殃,導(dǎo)致報(bào)錯(cuò)囚痴。
http://192.168.1.175/HealthManager/public/index.php/mobile/test/test
因?yàn)槲业膌ocalhost定位在www文件夾,所以在登陸操作的時(shí)候會出現(xiàn)加載不出樣式的情況审葬,根據(jù)控制臺network顯示深滚,是因?yàn)榈刂氛也坏健?br> 而后面訪問控制器中的方法骂束,則是因?yàn)槲覐?fù)制粘貼,忘記了該類的名字了成箫,導(dǎo)致找不到控制器展箱。
image.png -
如何從服務(wù)器端獲取數(shù)據(jù)并渲染?
一開始我在服務(wù)器端使用data)
的方法蹬昌,但是app端接收到的數(shù)據(jù)卻是html而不是json混驰。
后來我直接在服務(wù)器端返回json編碼后的數(shù)據(jù),再傳回app皂贩,然后在app端用for循環(huán)賦值栖榨。
雖然比以前麻煩一點(diǎn),但是還是可以實(shí)現(xiàn)的明刷。問題是為何這里服務(wù)器沒有傳回json值婴栽?過去我用mui框架開發(fā)的時(shí)候是可以的。
image.png
- 遇到了數(shù)據(jù)中含有html標(biāo)簽辈末,而渲染的時(shí)候被當(dāng)作字符串的問題愚争。
解決方法:https://blog.csdn.net/gossiphhh/article/details/78316553
代碼:
<view class="title" v-html="item">
{{item}}
</view>
ps:
如果item里面沒有html標(biāo)簽,則無法解析挤聘,且也無法正常渲染轰枝,因?yàn)殇秩竟?jié)點(diǎn)里面必須是string或array
注意:
在和v-for使用時(shí),一定不要把v-html和v-for寫在一個(gè)view里面组去,否則會讓非html標(biāo)簽內(nèi)容無法顯示鞍陨。應(yīng)該寫在有html標(biāo)簽的最小view里面。也就是不要影響別的view里的內(nèi)容从隆。
<view class="selection-item row" v-for="(i,nindex) in item.selection" :key="nindex">
<view class="" v-html="i">//這樣寫才不會影響到input的正常顯示
{{i}}
</view>
<view class="" v-if="homePosts[index]['selection'][0]=='生日'">
<input type="text" value="" placeholder="input"/>
</view>
</view>
- php數(shù)組相關(guān)
1)建立一個(gè)數(shù)組:
$a=[];
$a=['name'=>'Homura','age'=>'500']
這種是有鍵名的定義方式诚撵,這個(gè)可以用于json格式的數(shù)組創(chuàng)建。
<?php
$array = array("foo", "bar", "hallo", "world");
var_dump($array);
?>
array(4) {
[0]=>
string(3) "foo"
[1]=>
string(3) "bar"
[2]=>
string(5) "hallo"
[3]=>
string(5) "world"
}
這是一維數(shù)組的定義方式键闺,無需鍵名
給數(shù)組添加一個(gè)元素寿烟,可以用
array_push(array_name,value)
or
array_name[]=value;
二維數(shù)組中某個(gè)元素的使用:
array_name[index]['key']
for example:
$waifu=[{'name'=>'Homura','age'=>'500'},
{'name'=>'Hikari','age'=>'501'}]
i want to get Homura
waifu[0]['name']=Homura
- 如果我數(shù)據(jù)庫中的一條數(shù)據(jù)漏掉了了,那么之后該怎么補(bǔ)上艾杏?
我想到的是在數(shù)據(jù)庫中把要插入的位置后面的數(shù)據(jù)的id都先+1韧衣,然后空出這個(gè)位置盅藻,進(jìn)行update操作购桑。但是這樣一來不就需要直接對數(shù)據(jù)庫進(jìn)行操作了嗎。那么后臺管理的好處不久體現(xiàn)不出來了嗎氏淑?這是否意味著我應(yīng)該增加一個(gè)在某一行后插入的功能呢勃蜘?就像網(wǎng)頁版的數(shù)據(jù)庫管理工具一樣 - var/let
區(qū)別暫時(shí)不討論,只說一下注意點(diǎn)假残。
這兩個(gè)應(yīng)該都是定義變量缭贡。我試圖用變量來替代麻煩的數(shù)組元素定位炉擅。
let isActive=that.homePosts[index]['isActive']
結(jié)果我在后面修改數(shù)組元素的時(shí)候直接用變量名來代替了
isActive=!isActive
我以為這樣子數(shù)組元素也會改變,但是實(shí)際上它們的地址是不同的阳惹。所以要簡化也只能這么書寫:
that.homePosts[index]['isActive']=!isActive
-
git使用問題記錄
終于到git了谍失,這個(gè)工具必須要學(xué)會使用啊莹汤!
1) 在本地初始化一個(gè)repository
在需要建立git倉庫的文件夾右鍵點(diǎn)擊gui bash here快鱼,進(jìn)入git 命令行
image.png
我一直都犯了錯(cuò)。我總是喜歡在一個(gè)項(xiàng)目的外部進(jìn)行初始化纲岭,為的是想add的時(shí)候直接寫項(xiàng)目名稱更加方便抹竹。但是實(shí)際上這樣子做會把別的項(xiàng)目也給上傳到遠(yuǎn)程庫。實(shí)際上止潮,一個(gè)項(xiàng)目就應(yīng)該是單獨(dú)的一個(gè)git庫窃判。而添加多個(gè)修改的文件,只需要用git add -A .指令就可以了喇闸。唉袄琳。
2)初始化一個(gè)Git倉庫,使用git init命令燃乍。
3)添加文件到Git倉庫跨蟹,分兩步:
使用命令git add <file>,注意橘沥,可反復(fù)多次使用窗轩,添加多個(gè)文件;
我直接把外部整個(gè)文件夾都add入庫了
使用命令git commit -m <message>座咆,完成痢艺。
4)在碼云上創(chuàng)建一個(gè)repository,勾選建立readme文檔(這是一個(gè)坑)
5)關(guān)聯(lián)本地和遠(yuǎn)程的repository
$git remote add origin git@gitee.com:uesugieriislf/HealthManager.git
這里的origin是遠(yuǎn)程庫的別名介陶,可以自己取一個(gè)堤舒,默認(rèn)為origin
-
可以用git remote -v來查看遠(yuǎn)程庫情況
image.png
7)這里是一個(gè)錯(cuò)誤記錄
我想把本地庫push到遠(yuǎn)程庫,但是報(bào)錯(cuò)了哺呜,提示遠(yuǎn)程庫和本地庫內(nèi)容不一致舌缤,要我先從遠(yuǎn)程庫pull后再push
于是我使用pull
于是再修改
終于到了關(guān)鍵處了,
提示無法合并不相關(guān)的歷史
于是百度
解決Git無法合并不相關(guān)的歷史
解決方法:
git pull origin master --allow-unrelated-histories
允許合并某残,這時(shí)git轉(zhuǎn)入insert模式国撵,要我寫明合并理由。由于本人沒有系統(tǒng)學(xué)過linux玻墅,因此不太了解如何退出編輯模式介牙,故繼續(xù)百度
git 如何退出編輯模式
按esc,再輸入澳厢;wq环础,即可保存退出
于是我們pull成功了囚似,就可以push了
8)分支管理和多人協(xié)作
合并分支:git merge <分支名>
默認(rèn)采用fast forward 模式
如果想看歷史記錄,最好禁用线得,則加上參數(shù):--no-ff
git merge dev --no-ff
git stash在切換分支時(shí)可能會經(jīng)常用到
9)git add 多個(gè)文件
git add 所有文件
git add -A=git add all file
git add -A .=git add all file edited
git add xx
命令可以將xx文件添加到暫存區(qū)饶唤,如果有很多改動(dòng)可以通過 git add -A .
來一次添加所有改變的文件。
注意 -A
選項(xiàng)后面還有一個(gè)句點(diǎn)贯钩。 git add -A
表示添加所有內(nèi)容搬素, git add .
表示添加新文件和編輯過的文件不包括刪除的文件; git add -u
表示添加編輯或者刪除的文件,不包括新添加的文件
10)忽略一些文件
http://www.reibang.com/p/74bd0ceb6182
在git提交時(shí)魏保,總有一些臨時(shí)文件等是我們不想提交的熬尺,這時(shí)就可以定義gitignore規(guī)則來忽略它們
https://www.liaoxuefeng.com/wiki/896043488029600/900004590234208
事實(shí)上,最新的win10已經(jīng)可以直接新建一個(gè).gitignore就行了谓罗,不用再另存為了
11)如果現(xiàn)在的代碼出了問題粱哼,想清空遠(yuǎn)程庫和本地庫,該如何操作檩咱?
本地:刪除.git文件
遠(yuǎn)程:在碼云中的倉庫管理里面清空倉庫
然后重新建庫上傳揭措。記得要寫忽略規(guī)則
12) 如何用github和別人進(jìn)行協(xié)同開發(fā)?
如何用github和別人進(jìn)行協(xié)同開發(fā)刻蚯?
8.uni-app引入icon font圖標(biāo)
1)在iconfont網(wǎng)站下好文件绊含,然后解壓到想要放的文件夾中(比如static/css)
也可以不做什么修改,頂多刪去了一些不用的文件炊汹,保留了所有字體文件躬充,然后一起放在文件夾里,當(dāng)然這種寫法顯然不太好讨便。占空間不說充甚,每次更新都要下載一遍,不方便霸褒。所以還是推薦使用網(wǎng)絡(luò)引用方式伴找。具體看鏈接
2)注意,在main.js 中寫:
import "./static/css/iconfont.css"废菱,否則無法生效
9.uni-app圖片
1)圖片名字不能有中文技矮,也不能有空格
2)背景圖片有限制,不能超過40KB殊轴,超過就要用服務(wù)器地址或者base64
https://ask.dcloud.net.cn/question/61878
10.css畫三角形
11.多級返回
onUnload() {
uni.navigateBack({
delta: 2//1是返回衰倦,2是返回兩層,以此類推
});
}
- ThinkPHP5引用百度AI菜品識別
之前看官方文檔卡了好久梳凛,結(jié)果問朋友才發(fā)現(xiàn)其實(shí)可以很簡單耿币,我還不敢相信梳杏。說起來韧拒,我到現(xiàn)在也不知道為何不用獲取TOKEN淹接,明明網(wǎng)上找的例子都寫了呀
1.)在百度AI網(wǎng)頁下載好PHP的SDK
https://ai.baidu.com/sdk#vis
2)解壓,重命名叛溢,放入extend路徑
image.png
3)在需要用的php文件里添加namespace和use塑悼,否則無法引入class文件
注意,只需要添加命名空間和use楷掉,千萬不要?jiǎng)h除原有的代碼厢蒜,否則會造成依賴關(guān)系出錯(cuò)
4)參考文檔(https://ai.baidu.com/docs#/ImageClassify-PHP-SDK/top)
在自己的控制器中寫代碼
<?php
namespace app\mobile\controller;
use AI\AipImageClassify;
use think\console\command\Lists;
use think\Controller;
use think\Db;
use think\Loader;
use app\mobile\model\Item as ItemModel;
const APP_ID = '你的APP_ID';
const API_KEY = '你的API_KEY';
const SECRET_KEY = '你的SECRET_KEY';
class Pic extends Controller
{
public function index()
{//判斷是否是post請求
if (request()->isPost()){
$imagePath=input('imagePath');
//接受請求參數(shù)
$client = new AipImageClassify(APP_ID, API_KEY, SECRET_KEY);
$image = file_get_contents($imagePath);
// 調(diào)用菜品識別
$client->dishDetect($image);
// 如果有可選參數(shù)
$options = array();
$options["top_num"] = 3;
$options["filter_threshold"] = "0.7";
$options["baike_num"] = 5;
// 帶參數(shù)調(diào)用菜品識別
$data=$client->dishDetect($image, $options);
dump($data['result'][0]);
}
}
}
13.uni-app中請求API的注意事項(xiàng)
uni.request({
url: _self.apiServer+'pic/index',
method: 'POST',
data: {
imagePath:_self.staticServer+JSON.parse(uploadFileRes)
},
success: res => {
console.log(res.data);
},
fail: () => {},
complete: () => {}
});
1)url必須是字符串,這里定義的_self.apiServer是在main.js里面定義好的全局使用的服務(wù)器地址
2)這里的uploadFileRes = uploadFileRes.data;
是從服務(wù)器端接收到的數(shù)據(jù)烹植,再次上傳給服務(wù)器需要經(jīng)過json.parse轉(zhuǎn)換為JavaScript對象后才可以使用斑鸦。因?yàn)橐哑唇映鲆粋€(gè)圖片的網(wǎng)絡(luò)地址,所以用到了字符串的拼接草雕。如果不把json數(shù)據(jù)解析成出來巷屿,就無法拼接
安裝fastadmin
在開發(fā)過程中遇到了無法修復(fù)的bug,只好重新安裝過墩虹。于是記錄下安裝過程嘱巾,方便以后參考
1)安裝文檔https://doc.fastadmin.net/docs/install.html
輸入網(wǎng)址
http://www.yoursite.com/install.php
填寫對應(yīng)的數(shù)據(jù)庫名稱,這里最關(guān)鍵了诫钓,因?yàn)槲沂侵匦掳惭b旬昭,所以之前的代碼還是可以復(fù)用的。
2)對數(shù)據(jù)庫進(jìn)行修改后一定要重新生成CRUD才生效菌湃,并且要采用強(qiáng)制覆蓋模式
3)在application的config.php里面找到'login_captcha'即可設(shè)置登陸驗(yàn)證碼的開關(guān)
4)新安裝好后記得要打開調(diào)試问拘,這個(gè)只在開發(fā)階段打開,部署時(shí)要關(guān)掉惧所,以免影響性能场梆。開發(fā)時(shí)不打開往往就會看到一個(gè)“你無法訪問當(dāng)前頁面”的網(wǎng)頁,沒有幫助纯路,還會讓人迷惑或油。所以必須記得
5)數(shù)據(jù)庫里面在設(shè)計(jì)的時(shí)候最好都默認(rèn)為空,否則很容易報(bào)錯(cuò)驰唬。
6)插入的時(shí)候可以采用兩種方式顶岸,一種是直接用Db的insert()方法,還有一種是調(diào)用model叫编,用save()辖佣。
7)在服務(wù)器端寫dump()或者echo,就相當(dāng)于return了
登陸功能的實(shí)現(xiàn)
這是一個(gè)坑搓逾,一時(shí)半會兒可能不會填
我突然意識到卷谈,合作難得不是使用git這樣的工具,而是兩個(gè)人的思路不一樣霞篡。我們的代碼幾乎是不同風(fēng)格的世蔗,最好就不要一起做一個(gè)模塊端逼,否則就要改。而且污淋,我們沒有對數(shù)據(jù)庫有一致的認(rèn)識顶滩,導(dǎo)致前端界面與數(shù)據(jù)庫不匹配,這下又得改了寸爆。不難礁鲁,但是很煩!我們的交流也太少了赁豆。嗯仅醇,內(nèi)心十分煩躁。
我覺得數(shù)據(jù)庫的地位相當(dāng)重要魔种。首先應(yīng)該確認(rèn)數(shù)據(jù)庫的設(shè)計(jì)着憨,然后再與前端頁面對應(yīng)起來饭宾。我們的設(shè)計(jì)圖上應(yīng)該標(biāo)清楚其與數(shù)據(jù)庫字段的對應(yīng)關(guān)系的∈呓妫現(xiàn)在他應(yīng)該已經(jīng)發(fā)現(xiàn)問題所在了≌赐撸肯定要修改頁面了心铃。按他這樣的寫法准谚,那不是要干很多的重復(fù)勞動(dòng)了。
還有去扣,英文水平還是要有的柱衔,否則我都要看不懂命名了。漢語拼音真的太讓人不明所以了愉棱。就和片假名一樣了唆铐。
但是我不確定的是,應(yīng)該用手繪圖紙還是用計(jì)算機(jī)繪制奔滑。前者覺得太落后艾岂,后者又缺乏工具。
突然發(fā)覺朋其,兩個(gè)人合作的時(shí)候應(yīng)該要把數(shù)據(jù)庫放在云服務(wù)器上王浴,這樣兩個(gè)人的數(shù)據(jù)就可以共享了。而數(shù)據(jù)庫對帶寬的要求也不高梅猿。而開發(fā)則是繼續(xù)用git
popup組件使用tip
不要在組件標(biāo)簽處寫class氓辣,這樣會導(dǎo)致組件出問題。
要寫樣式袱蚓,就在內(nèi)部寫钞啸。
<uni-popup ref="popup" type="bottom">
<view class="Popup-header row jc-between padding-sm" >
<view class="" @click="cancel">
取消
</view>
<!-- 此處應(yīng)為下拉框 -->
<view class="">
早餐
</view>
<view class="" @click="confirm">
確認(rèn)
</view>
</view>
</uni-popup>
progress組件使用tip
一定要有一個(gè)有寬高的外置view,否則無法顯示
<view class="progress-box">
<progress percent="80" activeColor="red" active stroke-width="8" />
</view>
progress的動(dòng)畫完成事件只有微信支持……那我為何還要用這個(gè)組件呢?直接用動(dòng)畫寫不好嗎体斩?說好的跨平臺呢梭稚?
uniapp頁面?zhèn)鲄?/h2>
https://blog.csdn.net/wwf1225/article/details/90476503
注意:傳數(shù)組前要JSON.stringfy
接受頁面要JSON.parse才可以使用
后續(xù)問題
沒想到,在許久不碰前端代碼后硕勿,今天我還得來記錄一些筆記哨毁。但其實(shí)枫甲,這些都是我以前開發(fā)時(shí)記錄過的源武。只是那時(shí)沒有一個(gè)統(tǒng)一的筆記本,都是在工程文件里隨手建一個(gè)md文檔記錄想幻。開發(fā)的時(shí)候的確還挺方便的粱栖,可是一旦開始新項(xiàng)目,就會遇到找不到筆記的問題脏毯。
現(xiàn)在的我闹究,就是腦子里有一個(gè)印象,可是并不準(zhǔn)確食店,想找當(dāng)初的筆記渣淤,卻發(fā)現(xiàn)又找不著了,或者是太懶了吉嫩。
所以价认,一個(gè)記錄筆記的網(wǎng)站不可缺。以前是簡書自娩,現(xiàn)在是語雀用踩。我覺得,這應(yīng)該是自己未來該有的狀態(tài)忙迁。所有的經(jīng)驗(yàn)脐彩,都值得被記錄。
這次要記錄的是局域網(wǎng)中不同設(shè)備之間如何訪問姊扔。這個(gè)以前上網(wǎng)絡(luò)課程的時(shí)候還只是一道計(jì)算題惠奸,算各種子網(wǎng)地址,然而到現(xiàn)實(shí)中使用時(shí)才知道問題不是怎么計(jì)算地址恰梢,而是怎么利用地址晨川。
最初用瀏覽器訪問后臺,都是用localhost或者h(yuǎn)ttp://127.0.0.1,因?yàn)檫@是默認(rèn)的這臺主機(jī)的意思删豺。而別的設(shè)備要訪問這臺主機(jī)共虑,那就要知道這臺主機(jī)在局域網(wǎng)(公網(wǎng))中的地址。所以應(yīng)該先查出自己電腦的子網(wǎng)地址呀页,然而在別的設(shè)備中使用這個(gè)地址來指代這臺設(shè)備妈拌。
![YC_IKIH3U)9G2T_ZPWG]UBK.jpg](https://upload-images.jianshu.io/upload_images/2233068-c296aa6ca91d6af7.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
當(dāng)然,這個(gè)認(rèn)識依舊很粗淺,只是能解決問題尘分,而不能解釋原因猜惋。