为你的网站添加 Do you like me 小组件 应该有人注意到博主在侧边栏添加了一个 Do You Like Me
的小组件,其实我觉得更为简便的方法就是使用 PHP+SQL+AJAX
,但本着折腾+降低成本(白嫖) 的想法,用 Vercel
,LeandCloud
和 Node.JS
撸了一个出来。
Node版本 由于 Node.Js
属于半入门状态,所以代码质量不高,但程序终究是以奇怪的方式跑起来了。
项目地址:https://github.com/5ime/likeMe
PHP 版本 由于我是 vercel
托管没有 创建
或 修改
文件的权限,所以说每一次获取 like
数量都会请求 LeanCloud
,导致请求数很高。
所以又撸了一个 PHP
版本出来,把 like
数量写入到了 count.dat
文件中,请求时读取 count.dat
点击后更新 count.dat
。下面的代码上传到自己的服务器即可。
先使用 composer
安装LeanCloud SDK:
1 composer require leancloud/leancloud-sdk
具体代码如下,参数获取
和 组件调用
请参考 https://github.com/5ime/likeMe/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 <?php error_reporting (0 );header ('Access-Control-Allow-Origin: *' );header ('Content-type: application/json' );require_once ("vendor/autoload.php" );use LeanCloud \Query ;use LeanCloud \Client ;use LeanCloud \CloudException ;initializeLeanCloud ();define ("COUNT_FILE" , "count.dat" );if ($_SERVER ["REQUEST_METHOD" ] == "POST" ) { $response = incrementLikeCount (); } else { $response = getLikeCount (); }echo json_encode ($response , JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);function initializeLeanCloud ( ) { Client ::initialize ("你的app-id" , "你的app-key" , "你的master-key" ); }function incrementLikeCount ( ) { $query = new Query ("likeCount" ); $objectId = "你的objectId" ; try { $todo = $query ->get ($objectId ); $todo ->increment ("count" , 1 ); $todo ->save (); $count = $todo ->get ("count" ); writeToFile ($count ); return [ 'code' => 200 , 'msg' => 'success' ]; } catch (CloudException $e ) { return [ 'code' => 500 , 'msg' => $e ->getMessage () ]; } }function getLikeCount ( ) { $count = readFromFile (); return [ 'code' => 200 , 'msg' => 'success' , 'data' => [ 'count' => $count ] ]; }function writeToFile ($data ) { if ($file = fopen (COUNT_FILE, "w" )) { fwrite ($file , $data ); fclose ($file ); } }function readFromFile ( ) { if ($file = fopen (COUNT_FILE, "r" )) { $count = fread ($file , filesize (COUNT_FILE)); fclose ($file ); return $count ; } return "0" ; }?>