目前,你所看见的这个BLOG系统,实际上是我用LARAVEL手敲的,并不是说重复造轮子(虽然我造过很多)主要是为了能够在轻量化的情况下添加上我所需要的功能。
既然是为了轻量化,那这个BLOG程序所用的技术不多,仅仅是Laravel全家桶。数据库也没有部署在MySQL这类在线数据库上,而是直接用自带的Sqlite,简单直接。也方便数据的转移和备份。
所有用到库:
如果你也想部署一个这样的博客,那非常欢迎!但是需要你有一定的编程基础! 开源地址:十载北林/BlueBlog (gitee.com)
这个问题的解决其实还是很凑巧的。一开始,我用过 TinyMCE、WangEditor 等富文本编辑器,但是他们的内容始终无法绑定到 Livewire 上。
简单来说就是,他没办法直接将编辑器中的 markdown 文本保存在变量中,经过查阅文档后,解决方法也很简单:将需要绑定的内容通过 Livewire 内置的 Javascript 块在编辑器的回调中绑定。
简单看下代码:
@script
<script>
new Cherry({
id: 'markdown-container',
value: '',
fileUpload: fileUploadFunc,
callback: {
afterChange: function(md, html) {
// 关键程序段
$wire.content = md;
}
},
});
</script>
@endscript
可以看到,解决方案中,我将编辑器的初始化代码放在了 Livewire 特有的 @Javascript
代码块中,随后将编辑器内容变化回调 afterChange
中,通过代码块中定义的 $wire
对象,动态绑定编辑内容,以此来完成数据的绑定。值得注意的是,这绑定是单向的,即前端->后端,后端的数据更新是不会影响前端的!这个需要注意!
根目录下运行:
php artisan livewire:publish --assets