Wwwishlist - это расширение Chrome, способное сохранять желания от любого веб -сайта в Интернете для локального хранения браузера Chrome. Ваши данные остаются полностью частными из -за этого.
Расширение в настоящее время выпускается Unlceeded и станет полностью публичным, как только мой друг проверит его в течение 1-2 месяцев.
Более подробное описание см. В Chrome Shorepage.
Ниже вы найдете краткий обзор внутренней работы, что планируется, и если вы хотите стать участником, некоторые документы и лицензионные вещи.
Сердцем wwwishlists является всплывающее окно (HTML, контроллер и представление) вместе со скребком.
Скребок вводит код на веб -сайте, откуда открывается всплывающее окно для возврата изображений. Я попытался захватить цену, но быстро узнал, что цена часто бывает не намного, чем текстовое поле (или многократное). Изображения слегка отфильтрованы для удаления изображений, которые определенно не являются изображениями продукта. Я решил не вводить это в каждый iframe на странице, потому что я столкнулся с проблемами на веб -сайте Amazon.de. Если вы знаете, почему эта проблема существует, сделайте мой день и скажите мне. Как только пользователь вводит все данные и сохранения, выбранное изображение окрашивается на холст, сокращенный до 200x200 пикселей и преобразуется в данные Base64, поскольку API расширения Chrome позволяет только один большой файл JSON для локального хранилища. Если этот процесс столкнется с проблемой CORS, URL -адрес изображения защищен вместо этого.
Я не планирую никаких больших обновлений функций. Я очень заинтересован в любом веб -сайте, где мое расширение не работает. Следующее, что я, наверное, напишу, это правильные модульные тесты для функций. Я провел свой тест, заставляя все работать, и сожалею, что не автоматизировал псевдо -тесты, которые я написал в течение этого периода. Мне бы очень хотелось, чтобы лучшая экономия цены/валюты (прямо сейчас это просто строка), но чтобы быть довольным тем, что я бы хотел извлечь из нее использование, то есть я, вероятно, хотел бы добавить все элементы в список желаний до одного общего числа (для списков пожеланий проекта). И для этого мне нужно было вызвать API конвертера валюты. Другая большая функция, которую я скучаю, - это простой способ поделиться, который не затрагивает меня запуска сервера.
Если вы хотите поработать над новой функцией, пожалуйста, поднимите проблему GitHub, я бы хотел поработать с вами, чтобы в конечном итоге утвердить ваш запрос на привлечение. Если вы просто хотите сделать исправления ошибок или обновить документы, запросы на то, что вытягивают, очень приветствуются. Если вы хотите создать/вилку из этого проекта: весь этот проект выпущен под GPL 2. Я выбрал GNU, чтобы сделать код непривлекательным для коммерциализации, не ограничивая некоммерческий обмен и изменение. Если вы хотите помочь, но не знаете, что с чем, посмотрите выше в разделе «Что запланировано».
Чтобы настроить проект на вашей машине, вам нужен NPM 10.5 или более поздней версии. После того, как у вас будет код запустить
npm install
Для установки зависимостей Булма и узла, указанных в пакете. Если вы хотите сгенерировать новый файл Bulma из ваших изменений SASS, просто запустите
npm css-build
или если вы хотите, чтобы это произошло автоматически, когда вы работаете над запуска SASS
npm start
Чтобы непрерывно строить Булму.
Чтобы добавить это расширение Chrome в свой хранилище Chrome, нажмите значок головоломки в правом верхнем углу -> Управление расширениями -> Включите режим разработчика -> Загрузка распакованной и выберите папку всемирного списка пожеланий в своем каталоге.
И, таким образом, у вас установлена версия разработчика.
API Chrome Storage API является злым, потому что он позволяет вам хранить в большом одиночном файле .json. Этот файл доступен через инструменты Dev, но, что более важно, в StorageTemplate.json вы можете увидеть структуру БД.
Хранение доступно только из моделей и базы данных.
В настоящее время я не уверен, что люди захотят внести свой вклад, поэтому сейчас я не объясню каждую функцию, а скорее структуру происходящего. Если вы действительно хотите это сделать, дайте мне знать, и я буду рад объяснить то, что вы не понимаете (и напишите больше подробных документов).
Я в основном следую за шаблоном MVC в коде. Подводя итог, каждая страница имеет контроллер и представление, в то время как у каждого данных есть модель. Каждая модель несет ответственность за действия CRUD (Create Read Update Delete), принадлежащие ей. Каждое представление отображает только данные или получает данные от пользователя. Каждый контроллер ожидает действий пользователя и призывает к представлению и моделям выполнять свои соответствующие задания. Версии выполняются в соответствии с семантической версией 2.0.0
На данный момент структура программы выглядит следующим образом:
При установке или обновлении фона.mjs вызывает dbmanager.mjs для настройки базы данных. Кроме того, фон. MJS делает записи меню контекстного меню, которые живут в меню «Значок расширения правой кнопкой мыши».
Вызывается из фонового.mjs при установке для настройки локального хранилища JSON, чтобы DB работал. Если вы хотите изменить функциональность структуры БД, здесь также произойдут миграции в обновлении.
Здесь все ограничения (мин и максимальные значения) для значений базы данных живут.
Расширение использует UUID V7, что означает, что идентификатор начинается с временной метки UNIX и продолжается со случайным числом. Это важно для правильного импорта данных (т.е. уникальные данные на самом деле уникальны).
Вы догадались, что этот файл правит, как импортировать и экспортировать данные. Это причина, по которой это расширение использует разрешение на загрузку. Пользователь доступ к этой функции только со страницы настроек.
Эти файлы представляют собой классы, которые обрабатывают операции CRUD по объектам желаний и списка желаний.
Настройки concontroller.mjs прямо сейчас действительно служит только для вызова функциональности импорта экспорта (плюс ссылки на кнопки). В настоящее время настройки нет, но, возможно, вы могли бы изменить это!
Пользователь взаимодействует с mywishlist.html через эти 2 файла. Редактирование, удаление, отменение удаления, движущиеся желания, создание списков пожеланий - все это происходит здесь.
Если всплывающее окно нажимается, контроллер вызывает scraper.mjs, а с помощью данных скребок получил представление, а затем заполняет всплывающее окно, чтобы пользователь мог решить, какую картинку сохранить и какую информацию добавить. Как только пользователь сделал, что представление получает эти данные, преобразует соответствующее изображение в BASE64 и отвечает на контроллер для сохранения.
Скребок вводит код на веб -сайте, откуда открывается всплывающее окно для возврата изображений. Я попытался захватить цену, но быстро узнал, что цена часто бывает не намного, чем текстовое поле (или многократное). Изображения слегка отфильтрованы для удаления изображений, которые определенно не являются изображениями продукта. Я решил не вводить это в каждый iframe на странице, потому что я столкнулся с проблемами на веб -сайте Amazon.de. Если вы знаете, почему эта проблема существует, сделайте мой день и скажите мне.
Спасибо Кьелду Шмидту за то, что он постоянный наставник и таким образом терпеливый учитель на протяжении всего этого проекта. Без вашего руководства я бы даже не начал кодировать.
Спасибо Хадделу за то, что он предоставил мне потрясающий крокодил изображения.
Спасибо всем моим друзьям, семье и интернет -незнакомцам, чтобы помочь с тестированием.
Спасибо Джейсону Тор Холл за создание потрясающего сообщества программистов и за его разрешение использовать свой магазин Merch в качестве моего учебного снимка.