关于alpine:如何上手学习-Alpinejs

什么是 Alpine.jsAlpine.js 是由开发者 Caleb Porzio 开发的一款响应式前端框架。和过来人们所相熟的 Vue.js、React、Angular 不同的是,Alpine.js 不须要你对于现有的利用进行高老本的革新,也没有 VDom 的概念,间接能够在现有的零碎中退出并应用。 疾速学习指南Alpine.js 在国内的应用并不多,因而,相应的学习内容大多是英文写就的,不过 Alpine.js 波及到的概念不会像 Vue、React 之类那么多,你能够很轻松学会它。 举荐学习路线A#lpine.js 没有那么多的概念,因而,学习路线也非常简单,你只须要把握以下一些内容就能够了 Alpine.js 根底语法和应用;Alpine.js 的magic helper; (非必须)Alpines.js 的状态管理工具 Spruce(非必须)根底语法的理解能够让你应用 Alpine.js 开发本人的利用。而前面两者能够简化你的整个开发工作流,晋升本人的开发效率。 举荐学习文档1. 查阅官网文档,学习根底语法学习 Alpine.js ,首先离不开的是官网文档,Alpine.js 的官网文档在其我的项目主页 https://github.com/alpinejs/a... 如果你的英语不够好,我举荐你看台湾的开发者翻译的繁体中文版,尽管语法和用词不齐全一样,但对于英语不好的开发者来说,是一个不错的补充。 https://github.com/alpinejs/a... 此外,国内开发者还有在本人的博客上翻译简体中文版本,但未经官网认可,所以大家看的时候留神一下版本问题。具体的语法层面,我倡议你依照如下的逻辑来学习 第一梯队,学习: x-data:教你如何组织你的 Alpine.js 代码x-on:事件绑定x-if:逻辑解决x-for:列表渲染x-bind:数据绑定x-model:双向数据绑定这六个语法让你能够根本开始应用 Alpine.js。 第二梯队,学习: x-show:管制是否显示x-spread:将 Alpine.js 对象属性绑定到 Object 上x-text:管制元素内文字x-html:管制元素内 Htmlx-transition:管制转场突变动画这五个语法让你的 Alpine.js 我的项目领有更多的性能 第三梯队,学习: x-cloak:管制组件初始化实现x-ref:绑定父组件对象$el:获取元素$refs:获取父组件对象中标注的 x-ref$event:事件对象$dispatch:触发事件$nextTick:下次 DOM 更新$watch:监听数据变动上述这些语法能够让你更加深刻的应用 Alpine.js,不过在很多场景下可能你都用不到,所以也无需放心。 2. 查看罕用逻辑的实现形式,比对不同Hugo 是 Alpine.js 的开发团队成员之一,除了开发以外,Hugo 还在本人的网站上给出了一个 Playground ,你能够在这里看到一些 Alpine.js 的常见用例,比方:数据绑定、 for 循环、抓取数据等。 ...

February 17, 2021 · 1 min · jiezi

关于alpine:还在用Alpine作为你Docker的Python开发基础镜像其实Ubuntu更好一点

原文转载自「刘悦的技术博客」https://v3u.cn/a_id_173 个别状况下,当你想为你的Python开发环境抉择一个根底镜像时,大多数人都会抉择Alpine,为什么?因为它太小了,仅仅只有 5 MB 左右(比照 Ubuntu 系列镜像靠近 100 MB),但事实的假相是,咱们抉择根底镜像并不是为了体验一下Python语法而已,在此基础上,咱们须要调试和装置各种扩大,可能会装置很多三方依赖,甚至预设更多服务,在这种环境下,Alpine就并非是一个很好的抉择了,本次咱们就来别离在Alpine和Ubuntu上来体验一下装置和编译Python的区别。 首先别离拉取Alpine和Ubuntu的镜像: docker pull ubuntu:18.04 docker pull alpine拉取结束后,能够看到,体积上的确差距显著: REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 18.04 6526a1858e5d 2 weeks ago 64.2MB alpine latest a24bb4013296 3 months ago 5.57MBubuntu占用64mb,而alpine仅仅5.57mb。 然而先别着急,假如咱们的python利用须要做一些科学计算,并且将数据以图形的形式展现进去,这时候就须要matplotlib和pandas这两个库的帮忙了,先用ubuntu来装置这俩个库,编写Dockerfile.ubuntu FROM python:3.7-slim RUN pip install --no-cache-dir matplotlib pandas而后运行镜像脚本: docker build -f Dockerfile.ubuntu -t 'ubuntu-mat' .能够看到,编译好的镜像从原先的60mb暴涨到了263mb。 liuyue:blog liuyue$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu-mat latest 401f0425ce63 About a minute ago 263MB应用起来没有什么问题。 ...

September 30, 2020 · 2 min · jiezi

URLOS应用开发基础课Docker基础镜像Alpine入门教程

我们在进行URLOS应用开发时,经常会用到一些基础系统镜像,如:ubuntu、CentOS、Debian等,我们可以通过docker pull命令直接拉取官方镜像。 root@ubuntu:~# docker pull ubuntu:18.0418.04: Pulling from library/ubuntu898c46f3b1a1: Already exists63366dfa0a50: Already exists041d4cd74a92: Already exists6e1bee0f8701: Already existsDigest: sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8Status: Downloaded newer image for ubuntu:18.04root@master-node:~# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEubuntu 18.04 94e814e2efa8 6 weeks ago 88.9MBroot@ubuntu:~#以上是从docker官方拉取的ubuntu18.04镜像,我们可以基于此镜像制作相关的应用,比如LNP网站环境、LAP网站环境、Nodejs环境等等。简单理解,就是说几乎所有的docker应用都是在这些镜像上层层打包后得到的,应用的最终体积也许有几百M甚至上G,我们如何为应用瘦身以减少对磁盘的消耗呢? docker官方为我们打造了Alpine。Alpine 的意思是“高山的”,比如 Alpine plants高山植物,Alpine skiing高山滑雪、the alpine resort阿尔卑斯山胜地,其实Alpine是一个操作系统。 Alpine 操作系统是一个面向安全的轻型 Linux 发行版。目前 Docker 官方已开始推荐使用 Alpine 替代之前的 Ubuntu 做为基础镜像环境。这样会带来多个好处。包括镜像下载速度加快,镜像安全性提高,主机之间的切换更方便,占用更少磁盘空间等。 Alpine的特点: 1、小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB; 2、安全:面向安全的轻量发行版; 3、简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。 4、适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像。 在制作URLOS应用时,我们可以选择Alpine作为系统基础镜像,这样一来可有效降低应用的大小,方便其他用户下载安装。现在我们开始使用Alpine(如果你的系统中没有安装docker,建议先安装URLOS,因为它自带了docker)。 docker下运行Alpine使用docker pull命令拉取Alpine镜像 root@ubuntu:~# docker pull alpineUsing default tag: latestlatest: Pulling from library/alpinebdf0201b3a05: Pull completeDigest: sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913Status: Downloaded newer image for alpine:latestroot@ubuntu:~#使用docker images命令查看镜像 ...

April 26, 2019 · 2 min · jiezi

Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

一、配置目录结构1.1 crontabs# do daily/weekly/monthly maintenance# min hour day month weekday command# * * * * * /usr/bin/php /usr/share/nginx/html/artisan schedule:run >> /dev/null 2>&1Tips:一般在生产环境都是负载均衡,定时任务是单独在一个容器执行,故此是注释掉的,需要单独在定时任务容器中打开即可。2.1 nginx与php配置文件Tips:由于php配置文件是监听的sock,默认情况下监听端口 9000。PHP-FPM使用Unix套接字,这避免了TCP的开销。3.1 php二、Dockerfile详解#1.Base ImageFROM alpine# ensure www-data user exists#RUN set -x # && addgroup -g 82 -S www-data # && adduser -u 82 -D -S -G www-data www-data# EnvironmentsENV TIMEZONE Asia/ShanghaiENV PHP_MEMORY_LIMIT 512MENV MAX_UPLOAD 50MENV PHP_MAX_FILE_UPLOAD 200ENV PHP_MAX_POST 100MENV COMPOSER_ALLOW_SUPERUSER 1#2.ADD-PHP-FPM# Mirror mirror switch to Alpine Linux - http://dl-4.alpinelinux.org/alpine/RUN apk update \ && apk upgrade \ && apk add \ curl \ tzdata \ php7-fpm\ php7 \ php7-dev \ php7-apcu \ php7-bcmath \ php7-xmlwriter \ php7-ctype \ php7-curl \ php7-exif \ php7-iconv \ php7-intl \ php7-json \ php7-mbstring\ php7-opcache \ php7-openssl \ php7-pcntl \ php7-pdo \ php7-mysqlnd \ php7-mysqli \ php7-pdo_mysql \ php7-pdo_pgsql \ php7-phar \ php7-posix \ php7-session \ php7-xml \ php7-simplexml \ php7-mcrypt \ php7-xsl \ php7-zip \ php7-zlib \ php7-dom \ php7-redis\ php7-tokenizer \ php7-gd \ php7-mongodb\ php7-fileinfo \ php7-zmq \ php7-memcached \ php7-xmlreader \ && cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \ && echo “${TIMEZONE}” > /etc/timezone \ && apk del tzdata \ && rm -rf /var/cache/apk/# https://github.com/docker-library/php/issues/240# https://gist.github.com/guillemcanal/be3db96d3caa315b4e2b8259cab7d07e# https://forum.alpinelinux.org/forum/installation/php-iconv-issueRUN mkdir -p /usr/local/var/log/php7/RUN mkdir -p /usr/local/var/run/COPY ./php/php-fpm.conf /etc/php7/COPY ./php/www.conf /etc/php7/php-fpm.d/RUN apk add –no-cache –repository http://dl-3.alpinelinux.org/alpine/edge/testing gnu-libiconvENV LD_PRELOAD /usr/lib/preloadable_libiconv.so phpRUN rm -rf /var/cache/apk/# Set environmentsRUN sed -i “s|;date.timezone =.|date.timezone = ${TIMEZONE}|i” /etc/php7/php.ini && \ sed -i “s|;memory_limit =.|memory_limit = ${PHP_MEMORY_LIMIT}|i” /etc/php7/php.ini && \ sed -i “s|;upload_max_filesize =.|upload_max_filesize = ${MAX_UPLOAD}|i” /etc/php7/php.ini && \ sed -i “s|;max_file_uploads =.|max_file_uploads = ${PHP_MAX_FILE_UPLOAD}|i” /etc/php7/php.ini && \ sed -i “s|;post_max_size =.|post_max_size = ${PHP_MAX_POST}|i” /etc/php7/php.ini && \ sed -i “s|;cgi.fix_pathinfo=.|cgi.fix_pathinfo= 0|i” /etc/php7/php.ini#3.Install-ComposerRUN curl -sS https://getcomposer.org/installer | \ php – –install-dir=/usr/bin/ –filename=composer#4.ADD-NGINXRUN apk add nginxCOPY ./nginx/conf.d/default.conf /etc/nginx/conf.d/COPY ./nginx/nginx.conf /etc/nginx/COPY ./nginx/cert/ /etc/nginx/cert/RUN mkdir -p /usr/share/nginx/html/public/COPY ./php/index.php /usr/share/nginx/html/public/#RUN mkdir -p /run/nginx#RUN touch /run/nginx/nginx.pid# Expose volumesVOLUME ["/usr/share/nginx/html", “/usr/local/var/log/php7”, “/var/run/"]WORKDIR /usr/share/nginx/html#5.ADD-SUPERVISORRUN apk add supervisor \ && rm -rf /var/cache/apk/*# Define mountable directories.VOLUME ["/etc/supervisor/conf.d”, “/var/log/supervisor/"]COPY ./supervisor/conf.d/ /etc/supervisor/conf.d/#6.ADD-CRONTABSCOPY ./crontabs/default /var/spool/cron/crontabs/RUN cat /var/spool/cron/crontabs/default >> /var/spool/cron/crontabs/rootRUN mkdir -p /var/log/cron \ && touch /var/log/cron/cron.logVOLUME /var/log/cron#8.添加启动脚本# Define working directory.WORKDIR /usr/share/nginx/htmlCOPY ./entrypoint.sh /usr/share/nginx/html/RUN chmod +x /usr/share/nginx/html/entrypoint.sh#CMD [“supervisord”, “–nodaemon”, “–configuration”, “/etc/supervisor/conf.d/supervisord.conf”]ENTRYPOINT [”./entrypoint.sh"]传送门:Dockerfile、Docker-Compose基本命令与介绍三、镜像制作与启动3.1 根据Dockerfile制作镜像3.2 查看制作的镜像3.3 启动镜像3.4 浏览器查看是否成功四、镜像发布4.1 镜像发布一定要登录4.2 自动构建当关联的github代码发生改变是,自动触发构建。GitHub地址:https://github.com/tcyfree/anpscDocker Hub镜像地址:https://cloud.docker.com/repo… ...

March 7, 2019 · 2 min · jiezi