Последняя статья оПриложение библиотеки шаблонов GoВ конце статьи оставляем вопрос, шаблон страницы пропускаетсяCDN
цитируетсяBootStrap
изcss
,js
документ. До сих пор наши серверы не могут обслуживать клиентский статический файл и запрашивает ответный файл на диске сервера для клиента. Используется и настроенNginx
Сервер должен знатьNginx
Естественно поддерживает доступ к статическим ресурсам, поэтому стоит ли нам также использоватьNginx
Можно ли реализовать обработку запросов статических файлов? На самом деле нет. В первой статье мы сказали, что «язык Go может построить и запустить HTTP-сервер с высокой степенью параллелизма, не полагаясь на какие-либо сторонние компоненты».Go
лингвистическийnet/http
В библиотеке реализована задача обработки запросов к статическим ресурсам.
Давайте на простом примере научимся использоватьnet/http
Как создать сервер статических ресурсов, а затем применить его к нашемуhttp_demo
в проекте.
Исходный код каждой статьи из серии Go Web Programming содержит соответствующую версию программного пакета для справки. Ответ в публичном аккаунте
gohttp08
Получить исходный код этой статьи
Создайте сервер статических ресурсов
мы создаем новыйmain.go
Храните код для создания серверов статических ресурсов и запросов мониторинга и создавайте их в одном и том же каталоге одновременно.assets/css
а такжеassets/js
Каталог используется для хранения статических файлов, используемых шаблоном страницы из предыдущей статьи.
main.go
assets/
└── css
└── bootstrap.min.css
└── js
└── bootstrap.min.js
main.go
Код в следующем:
package main
import "net/http"
func main() {
fs := http.FileServer(http.Dir("assets/"))
http.Handle("/static/", http.StripPrefix("/static/", fs))
http.ListenAndServe(":8080", nil)
}
- Сначала мы используем
http.FileServer
Создать ответ с содержимым данной файловой системы на всеHTTP
обработчик запросов. -
http.Handle("/static/", http.StripPrefix("/static/", fs))
Разрешить файловому серверу использоватьassets
файл ответа в каталогеURL
путь начинается с/static/
все начиная сHTTP
просить. -
assets
установлен в корневой каталог файловой системы файлового сервера, файловый сервер/static
началоURL
запрос, поэтому нам нужно использоватьhttp.StripPrefix()
Пучокstatic
Префикс можно убратьassets
Запрошенный файл был найден в каталоге.
запустите программу, затем используйтеcURL
запросcss
файл и посмотреть, работает ли это.
$ go run main.go
$ curl -s http://localhost:8080/static/css/bootstrap.min.css
/*!
* Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2016 Twitter, Inc.
......
комбинироватьgorillia/mux
Использовать файловый сервер
В приведенном выше примере обработчик для файлового сервера зарегистрирован наnet/http
предоставляется стандартная библиотекаServeMux
(сервисный мультиплексор), мыhttp_demo
Для поддержки сложной регистрации маршрута в проекте используетсяgorillia/mux
Сервисный мультиплексор, предоставляемый библиотекой. Они работают по-разному, поэтому применение файлового сервера в нашем проекте потребовало некоторой настройки.
Сначала мы ставимassets
Каталог Вся копия в корневой каталог проекта.
func RegisterRoutes(r *mux.Router) {
// serve static file request
fs := http.FileServer(http.Dir("assets/"))
serveFileHandler := http.StripPrefix("/static/", fs)
r.PathPrefix("/static/").Handler(serveFileHandler)
......
}
- использовать
router.PathPrefix("/static")
Создать матч с/static
Маршруты для запросов префикса. - затем используйте
route.Handler
метод для регистрации файлового сервера в качестве обработчика, соответствующего маршруту (Handler
да*mux.Route
метод выше).
После регистрации файлового сервера обращаемся к предыдущему шаблону страницыCDN
Вверхjs
а такжеcss
Файл заменяется ссылкой на файл на собственном сервере.
<html lang="en">
<head>
......
<link href="/static/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
{{ template "nav" .}}
<div class="container">
{{template "content" .}}
</div> <!-- /container -->
<script src="/static/js/bootstrap.min.js"></script>
</body>
</html>
Затем перезапустите сервер и перейдите на предыдущую страницу.http:localhost:/view/index
, чтобы убедиться, что наш сервер теперь может обслуживать запросы на статические файлы.
Стиль страницы нормальный, пока такой есть на сервереassets
Файлы в каталоге мы можемhttp://localhost:8000/static/*
дорожкаURL
доступ к.
Исходный код, соответствующий сегодняшней статье, упакован и загружен, официальный аккаунт ответитgohttp08
Получите ссылку для скачивания, скачайте и потренируйтесь. Если статья может вам помочь, не забудьте переслать ее, нажмите на нее и поделитесь ею с большим количеством людей. Подпишитесь на официальный аккаунт, чтобы получать обновления статей каждую неделю.
Предыдущий отзыв
Глубокое погружение в написание HTTP-серверов в Go
Использование маршрутизатора gorilla/mux
Перейти к веб-программированию — База данных приложений
Перейти к веб-программированию — глубокое обучение разбору HTTP-запросов
Перейти к веб-программированию — супер-подробное руководство по применению библиотеки шаблонов