Предисловие:
Репо моей звезды уже больше 100. В один прекрасный день я пролистал список и вспомнил, что было много вещей, о которых я не знал, почему я снялся в первую очередь... (Это должно быть фолловер 2333), но, лично я считаю, что вообще чужие проекты на гитхабе не что иное, как следующее:
- Этот проект используется в текущих или будущих проектах, пометьте его звездочкой на случай, если вы забудете найти его в будущем (например, набор пакетов npm, которые часто используются во внешнем интерфейсе).
- Необходимо изучить и прочитать исходный код реализации этого проекта (например, Vue, React и т. д.)
- Коммунальные проекты (например, SS, фонарь, некоторые проекты вождения и т. д.)
- книги и документы с открытым исходным кодом
- Другие причины, такие как поощрение автора, или просто следование тренду большой звезды, или просто поклонники людей, которые знают друг друга...
Что касается разветвления чужих проектов, то в основном нужно сделать соответствующие модификации, а потом модифицировать PR на исходный проект, после чего происходит разветвление, изучать это не нужно.
Причины моего звездного проекта в основном первые три, но про звезду я тоже забыл, и чувствую, что это нехорошо, поэтому хочу написать удобный для себя клиент для управления звездным проектом.
Бывает, что про десктопные приложения я мало писал, так что это практическое занятие.Адрес проектаGitHub.com/zero KIS EK i/…
Выбор технологии:
Десктопная сеть вообще может поддерживаться электроном, а фронтенд будет писать немного vue, значит есть соответствующая поддержкаelectron-vue, но в целом мы знаем, что взаимодействие с системным API осуществляется API, предоставляемым электронами или node.js, а затем через ipc и тому подобное для передачи сообщений, и, поскольку я недавно запустил golang, интересно, смогу ли я используйте интерфейсный код для записи производительности пользователя и используйте golang в качестве поддержки взаимодействия с системным API, а затем найдитеgo-astilectronэтот проект:
Thanks to go-astilectron build cross platform GUI apps with GO and HTML/JS/CSS. It is the official GO bindings of astilectron and is powered by Electron.
Go и Javascript могут передавать сообщения через такие интерфейсы, как sendMessage и OnMessage, Далее идет выбор внешнего интерфейса, как показано ниже, где впервые используются посылки, vuetify и pouchdb:
Серия корзин семейства Vue: Vue2 + Vue-router + Vuex + Vue-i18n
Сборка пакета внешнего модуля: посылка
Фреймворк пользовательского интерфейса: Vuetify (прогрессивный фреймворк Material Design)
Интерфейсная база данных: Pouchdb
Сетевой запрос: axios
Подсветка кода и рендеринг уценки: github-markdown-css
Сборка проекта:
Сначала вам нужно установить Golang и настроить его.GOPATH и другие переменные, если они не настроены, вы можете обратиться кbuild-web-application-with-golangУчебная конфигурация
Если вышеуказанная часть была настроена, то следующим шагом будет установкаgo-astilectron
Связанные зависимости:
$ go get -u github.com/asticode/go-astilectron
$ go get -u github.com/asticode/go-astilectron-bundler/...
$ go get github.com/ZEROKISEKI/go-astilectron-bootstrap
В Celestial Dynasty 80% описанного выше процесса получения будут сталкиваться с этой ошибкой.
unrecognized import path "golang.org/x/ ..."
Что касается этой ошибки, если вы не можете преодолеть стену, вы можете использовать библиотеку зеркал github от golang для ее решения:
$ mkdir -p $GOPATH/src/golang.org/x
$ cd $GOPATH/src/golang.org/x
$ git clone https://github.com/golang/crypto.git
$ git clone https://github.com/golang/net.git
$ git clone https://github.com/golang/sys.git
После git clone вы можете перезапуститьgo get
, все должно быть в порядке. В настоящее время исполняемый файл для рабочего стола может быть сгенерирован с помощью команды bundler, но сначала мы должны собрать интерфейсную часть. Если у вас не установлен пакет, сначала установите пакет глобально:
yarn global add parcel-bundler
or
npm install parcel-bundler -g
Строить:
$ cd src
$ yarn or npm install
$ npm run build
Затем вы можете упаковать:
$ cd ..
$ astilectron-bundler -v
Вышеупомянутый шаг пойдет на загрузку астлектрона и электрона.В случае с Celestial Dynasty в 80% случаев снова будут проблемы, то есть загрузка не быстрая или слишком медленная, в результате чего произойдет сбой.Для этого может быть так:
Сначала создайте папку в текущем проекте, напримерcache_astilectron_bundler, затем вbundler.jsonДобавьте строку кода в:
"cache_path": "cache_astilectron_bundler"
тогда ты можешьGitHub.com/электрон/плохой…Найдите тот, который соответствует вашей системеelectron 1.8.1версия, помещенная вcache_astilectron_bundlerи выполните следующие переименования:
electron-windows-amd64-1.8.1.zip(windows系统)
electron-darwin-amd64-1.8.1.zip(OSX系统)
electron-linux-amd64-1.8.1.zip(linux系统)
существуетGitHub.com/AST ICOs/Аспен…Загрузите версию astileron 0.20.0, также размещенную вcache_astilectron_bundler, переименован:
astilectron-0.20.0.zip
Конечно, если вы хотите связать три версии системы на одном компьютере одновременно, вам нужно загрузить три соответствующие версии электрона 1.8.1 и выполнить вышеуказанное переименование, все помещенные вcache_astilectron_bundler, затем добавьте следующий код в bundler.json:
"environments": [
{"arch": "amd64", "os": "darwin"},
{"arch": "amd64", "os": "linux"},
{"arch": "amd64", "os": "windows"}
],
Затем упаковщик должен иметь возможность сгенерировать соответствующий двоичный исполняемый файл.Адрес генерации по умолчанию находится в выходной папке текущего проекта.
Демонстрация проекта:
Вы можете выбрать английский или китайский язык для входа:
После входа в систему с помощью OAuth вы можете увидеть категории (по языку) репозиториев, которые вы отметили звездочкой:
Отрисовываются как файл кода, так и файл уценки, и пишется директива для предотвращения загрузки URL-адресов, таких как **./xxx, ../xxx, #xxx**:
Изучив часть исходного кода octotree, я также написал компонент, который может просматривать дерево кода проекта:
Пользовательская категория:
Вы можете просмотреть ранее загруженные файлы в автономном режиме:
постскриптум:
В первый раз, когда я использовал посылку, так называемая сборка с нулевой конфигурацией действительно не была охвачена, но проблемы в процессе использования все же были, в основном потому, чтоvuetify.css/vuetify.min.css
Некоторые стили используют, например, **display: -webkit-box; -webkit-box-orient: vertical;**, и этот метод был отменен как в autoprefixer, так и в cssnano, который сжимает css, и будет напрямую. Такой код удаляется, а сборка посылки использует cssnano по умолчанию, единственный способ не использовать его - это--no-minify
, но в этом случае все файлы не сжаты, а упакованный файл js имеет размер в несколько m (но путь к файлу все еще используется, поэтому он не имеет никакого эффекта)
go-astilectron загружает файл пути к файлу для github oauth, в основном создавая новое окно с адресом авторизации github oauth, а затем отслеживаяwebcontents.will.navigate
иwebcontents.get.redirect.request
Для этих двух событий код, возвращенный oauth, используется для запроса токена, а затем сообщение передается в главное окно. Главное окно отправляет сообщение внешнему токену, и процесс oauth завершается. go-astilectron не имеет поддержки этих двух событий, поэтому я поднял PR, чтобы добавить поддержку этих двух событий, и, кстати, я также написалdemo, но в настоящее времяgo-astilectron
Недоделок еще много, поэтому не знаю, какие ямки потом появятся (если будут ямки, наверстывать)
Обнаружение автономного состояния (в основном, чтобы избежать ситуации, когда запрос все еще находится в автономном состоянии). navigator.online, который изначально предназначался для использования, но когда эта вещь возвращает false, проблем нет. когда это правда, это может не иметь доступа к Интернету (например, вы включили VMware Network), поэтому я использовал go, чтобы написать набор для соединения tcp с api.github.com для определения автономного статуса.Под Mac проблем нет, но это появится под окнами.cannot read Webcontents of undefined
проблема, которую необходимо исправить
Я чувствую, что каждый раз, когда я использую что-то новое, это процесс наступания на яму 2333, если вам интересно, добро пожаловать в звезду.