Laravel框架开发实践的心得
Laravel框架给我留下了深刻的印象,其优雅的语法和丰富的功能使得开发变得更加高效和愉快。在实际工作中,我通过以下几点来提升Laravel框架开发的效率和质量:
良好的文档和社区支持:Laravel拥有详细且易于理解的官方文档,同时也有庞大而活跃的社区支持。在遇到问题时,我能够迅速地查阅文档或向社区寻求帮助,节省了大量的解决问题时间。
遵循最佳实践:我始终坚持使用Laravel框架推荐的最佳实践,如MVC模式、依赖注入等。这样不仅有助于代码结构清晰、易于维护,也使得团队协作更加高效。
使用Composer管理依赖:Composer是PHP的依赖管理工具,我在项目中广泛使用Composer来管理第三方依赖包,确保项目的稳定性和安全性。
优化性能:在开发过程中,我会对代码进行性能优化,尽量减少数据库查询次数、缓存数据等方法来提高系统性能,从而改善用户体验。
安全性考虑:在开发过程中,我会重视数据验证、防止SQL注入、XSS攻击等安全问题,以确保系统的安全性和稳定性。
日志和错误处理:我在项目中加入了日志记录功能,及时记录系统运行情况,方便后期排查问题。同时,我也会合理处理异常,提高系统的可靠性。
自动化测试:我会编写单元测试、功能测试等各种测试用例,以确保代码质量和系统稳定性,同时减少潜在的bug出现。
项目复盘
在每个项目结束之后,我都会进行项目复盘,总结工作中的得失和经验教训。通过项目复盘,我发现了一些可以改进的地方:
沟通与协作:在团队协作中,及时有效的沟通和协作是非常重要的。在过去的项目中,我意识到在沟通和协作方面还有提升的空间,因此我开始主动与团队成员沟通,分享想法,并学习倾听他人的意见。
时间管理:在项目开发过程中,我注意到有时候会因为没有合理安排时间而导致工作效率降低。因此,我开始尝试使用时间管理工具来规划和分配工作时间,提高工作效率。
持续学习:技术更新换代非常快,作为一名软件开发工程师,持续学习是必不可少的。我开始着手学习一些新的技术,以便在未来的项目中能够更好地应用这些新知识。
技术笔记
为了巩固所学知识,我经常会编写技术笔记,将学到的知识整理成文字或者图表,以便之后复习和巩固。这种方式帮助我更好地理解和掌握所学的知识点,同时也提高了我的工作效率。
职场感悟心得
作为一名职场新人,我认识到在工作中除了技术能力之外,沟通能力、团队协作能力等软实力同样重要。我逐渐明白了团队合作的重要性,学会了与同事们更好地相处和合作。此外,我也意识到在职场中需要不断学习和提升自己,以应对日益复杂和多变的工作环境。
总的来说,Laravel框架的开发实践让我受益匪浅,项目复盘也让我有机会总结经验、找到改进的空间。而技术笔记和职场感悟心得则成为了我前行路上的宝贵财富。我相信,在未来的工作中,我会继续努力学习,不断提升自己,成为一名更优秀的软件开发工程师。
部分路由:
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
//后台
Route::get('/admin/login','Admin\UserController@login');
Route::post('/admin/check','Admin\UserController@check');
Route::get('/admin/logout', 'Admin\UserController@logout');
Route::get('/admin/index', 'Admin\IndexController@index')->middleware(['Admin']);
//栏目
Route::prefix('category')->namespace('Admin')->middleware(['Admin'])->group(function () {
Route::get('', 'CategoryController@index');
Route::get('add', 'CategoryController@add');
Route::post('save', 'CategoryController@save');
Route::get('edit/{id}', 'CategoryController@edit');
Route::post('delete/{id}', 'CategoryController@delete');
Route::post('sort', 'CategoryController@sort');
});
// 内容
Route::prefix('content')->namespace('Admin')->middleware(['Admin'])->group(function () {
Route::get('add', 'ContentController@add');
Route::post('upload', 'ContentController@upload');
Route::post('save', 'ContentController@save');
Route::get('edit/{id}', 'ContentController@edit');
Route::post('delete/{id}', 'ContentController@delete');
Route::get('{id?}', 'ContentController@index');
});
// 广告位
Route::prefix('adv')->namespace('Admin')->middleware(['Admin'])->group(function () {
Route::get('add/{id?}', 'AdvController@add');
Route::post('save', 'AdvController@save');
Route::post('delete/{id}', 'AdvController@delete');
Route::get('', 'AdvController@index');
});
// 广告内容
Route::prefix('advcontent')->namespace('Admin')->middleware(['Admin'])->group(function () {
Route::get('add/{id?}', 'AdvcontentController@add');
Route::post('upload', 'AdvcontentController@upload');
Route::post('save', 'AdvcontentController@save');
Route::post('delete/{id}', 'AdvcontentController@delete');
Route::get('', 'AdvcontentController@index');
});
// 首页
Route::get('/', 'IndexController@index');
Route::get('/lists/{id}', 'IndexController@lists');
Route::get('/detail/{id}', 'IndexController@detail');
Route::get('/like/{id}', 'IndexController@like');
Route::get('/comment', 'IndexController@comment');
Route::post('/register', 'UserController@register');
Route::post('/login', 'UserController@login');
Route::get('/logout', 'UserController@logout');
// 设置面包屑导航
Route::name('home')->get('/', 'IndexController@index');
Route::name('category')->get('/lists/{id}', 'IndexController@lists');
Route::name('detail')->get('/detail/{id}', 'IndexController@detail');
部分原代码:
<!DOCTYPE html>
<html>
<head>
@include('public/static')
<title>详细页</title>
</head>
<body>
@include('public/header')
<div class="main">
<div class="main-crumb">
<div class="container">
<!-- 面包屑导航 -->
<nav aria-label="breadcrumb">
{!! Breadcrumbs::render('detail', ['id'=>$id,'cid'=>$cid]); !!}
</nav>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-9">
<!-- 内容区域 -->
<article class="main-article">
<header>
<h1>{{$content->title}}</h1>
<div>发表于{{ date('Y-m-d', strtotime($content->create_time)) }}</div>
</header>
<div class="main-article-content">
<p><img class="img-fluid" src="/static/upload/{{$content->image}}"></p>
<p>{!! $content->content !!}</p>
</div>
<!-- 点赞模块 -->
@if(session()->has('users'))
<div class="main-article-like">
<span>
<i class="fa fa-thumbs-up" aria-hidden="true">{{$count}}</i>
</span>
</div>
@endif
</article>
<div class="main-comment">
<!-- 评论列表 -->
@if(!$comments->isEmpty())
<div class="main-comment-header">
<span id="count">{{$comments->count()}}</span> 条评论
</div>
@foreach($comments as $val)
<div class="main-comment-item">
<div class="main-comment-name">{{$val->user->name}}</div>
<div class="main-comment-date">
{{ date('Y-m-d', strtotime($val->created_at)) }}</div>
<div class="main-comment-content">{{$val->content}}</div>
</div>
@endforeach
@endif
</div>
<!-- 发表评论模块 -->
<div class="main-reply">
@if(session()->has('users'))
<div class="main-reply-header">发表评论</div>
<div class="main-reply-title">评论内容</div>
<div><textarea name="content" rows="8" id="content"></textarea></div>
<div>
<input type="hidden" id='c_id' value="{{$id}}">
<input type="button" value="提交评论" id="publish">
</div>
@endif
</div>
</div>
<div class="col-md-3">
<!-- 侧边栏 -->
@include('public/sidebar')
</div>
</div>
</div>
</div>
@include('public/footer')
</body>
<script>
$(document).ready(function() {
$(".fa-thumbs-up").bind("click", function () {
$.get("{{ url('like', $id) }}", {}, function (result) {
var count = result.count;
$(".fa-thumbs-up").html();
$(".fa-thumbs-up").html(count);
});
});
$('#publish').bind("click",function(){
var data = {
'cid' : $("#c_id").val(),
'content' : $("#content").val()
};
$.get("{{ url('comment') }}",data, function(result){
var data = result.data;
var user = data.user;
var html = '<div class="main-comment-item">';
html += '<div class="main-comment-name">' + user['name'] + '</div>';
html += '<div class="main-comment-date">';
html += data['created_time'];
html += '</div>';
html += '<div class="main-comment-content">';
html += data['content'] + '</div>';
html += '</div>';
$(".main-comment").append(html);
$("#count").html();
$("#count").html(data['count']);
});
});
});
</script>
</html>
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
<!-- Styles -->
<style>
html, body {
background-color: #fff;
color: #636b6f;
font-family: 'Nunito', sans-serif;
font-weight: 200;
height: 100vh;
margin: 0;
}
.full-height {
height: 100vh;
}
.flex-center {
align-items: center;
display: flex;
justify-content: center;
}
.position-ref {
position: relative;
}
.top-right {
position: absolute;
right: 10px;
top: 18px;
}
.content {
text-align: center;
}
.title {
font-size: 84px;
}
.links > a {
color: #636b6f;
padding: 0 25px;
font-size: 13px;
font-weight: 600;
letter-spacing: .1rem;
text-decoration: none;
text-transform: uppercase;
}
.m-b-md {
margin-bottom: 30px;
}
</style>
</head>
<body>
<div class="flex-center position-ref full-height">
@if (Route::has('login'))
<div class="top-right links">
@auth
<a href="{{ url('/home') }}">Home</a>
@else
<a href="{{ route('login') }}">Login</a>
@if (Route::has('register'))
<a href="{{ route('register') }}">Register</a>
@endif
@endauth
</div>
@endif
<div class="content">
<div class="title m-b-md">
Laravel
</div>
<div class="links">
<a href="https://laravel.com/docs">Docs</a>
<a href="https://laracasts.com">Laracasts</a>
<a href="https://laravel-news.com">News</a>
<a href="https://blog.laravel.com">Blog</a>
<a href="https://nova.laravel.com">Nova</a>
<a href="https://forge.laravel.com">Forge</a>
<a href="https://github.com/laravel/laravel">GitHub</a>
</div>
</div>
</div>
</body>
</html>
成果图: